У меня есть следующее определение метода шаблона объекта в моем файле .hpp (так как код является подробным, только соответствующие детали были воспроизведены ниже):
template<typename T>
void cache<T>::parse_input_file (string& filename){
parse_query = [](const string& s)->string{
...
};
process_query = [](const string& s, T& rc, int limit)->string{
...
};
auto print = [] (const string& s){
...
};
...
else{
auto s1 = parse_query(s);
s1 = process_query(s1, impl, cache_capacity);
print(s1);
...
}
...
}
Я получаю следующие ошибки компиляции для приведенного выше кода (образца) при компиляции с помощью команды:
g++ -ggdb -std=c++14 -Wall <file names>
error: use of undeclared identifier 'parse_query'
parse_query = [](const string& s)->string{
^
error: use of undeclared identifier 'process_query'
process_query = [](const string& s, T& rc, int limit)->string{
^
error: use of undeclared identifier 'parse_query'
auto s1 = parse_query(s);
^
Не уверен, почему я получаю ошибки для двух лямбда-определений с указанными типами возврата (нет ошибки для третьего лямбда-определения с автоматическим указанием типа возврата).
Кто-нибудь может указать на основную проблему?