Index: lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.h =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.h +++ lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.h @@ -90,14 +90,9 @@ int &decl_line, int &decl_column, int &call_file, int &call_line, int &call_column, lldb_private::DWARFExpression *frame_base) const; + /// The range of all the children of this DIE. - /// - /// This is a template just because child_iterator is not completely defined - /// at this point. - template - llvm::iterator_range children() const { - return llvm::make_range(T(*this), T()); - } + llvm::iterator_range children() const; }; class DWARFDIE::child_iterator Index: lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp =================================================================== --- lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp +++ lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp @@ -448,3 +448,7 @@ } else return false; } + +llvm::iterator_range DWARFDIE::children() const { + return llvm::make_range(child_iterator(*this), child_iterator()); +}