diff -r f86d5d6bb04e -r a47c2df5ae3d util/symtable.cc --- a/util/symtable.cc Fri Dec 26 12:43:13 2014 +0000 +++ b/util/symtable.cc Fri Dec 26 16:36:06 2014 +0000 @@ -149,9 +149,9 @@ // in the operator[] we delegate to find(), since that method will also search in the inner scopes! template -typename symtable_c::value_t symtable_c::operator[] (const char *identifier_str) {return find(identifier_str)->second;} -template -typename symtable_c::value_t symtable_c::operator[] (const std::string identifier_str) {return find(identifier_str)->second;} +typename symtable_c::value_t& symtable_c::operator[] (const char *identifier_str) {iterator i = find(identifier_str); return (i!=end())?i->second:_base[identifier_str];} +template +typename symtable_c::value_t& symtable_c::operator[] (const std::string identifier_str) {iterator i = find(identifier_str); return (i!=end())?i->second:_base[identifier_str];} template