lambda:错误:使用未声明的标识符

时间:2019-01-26 05:03:22

标签: c++ lambda compiler-errors c++14

.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);
                   ^

不确定为什么我在指定返回类型的两个lambda定义中出错(对于使用自动返回类型指定的第三个lambda定义没有错误)。

谁能指出潜在的问题?

0 个答案:

没有答案