лямбда: ошибка: использование необъявленного идентификатора - PullRequest
0 голосов
/ 26 января 2019

У меня есть следующее определение метода шаблона объекта в моем файле .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);
                   ^

Не уверен, почему я получаю ошибки для двух лямбда-определений с указанными типами возврата (нет ошибки для третьего лямбда-определения с автоматическим указанием типа возврата).

Кто-нибудь может указать на основную проблему?

...