在VS 14 CTP中无法使用auto声明lambda:类型为'void'的条件表达式是非法的

时间:2014-06-05 06:05:23

标签: c++ visual-studio visual-c++ lambda

使用Visual Studio 2014 CTP,C ++(v140)编译器:

auto gp = [&](BYTE* buff) {
     auto gp1 = [](char* bff, char** p1) {
                *p1 = strstr((char*)bff, "(");
                return (*p1);
     };
};

错误:

conditional expression of type 'void' is illegal

(也许auto在那里得到了错误的类型?)

如果我将内部lambda声明为std::function<char*(char*, char**)> gp1,那么它可以正常工作

我做错了什么或是编译器错误?

1 个答案:

答案 0 :(得分:0)

我没有运行2014,但您可能需要指定内部lambda的返回类型(可能默认为无效),使用&#39; - &gt;字符*&#39;像这样:

auto gp = [&](BYTE* buff) {
    auto gp1 = [](char* bff, char** p1) -> char* {
        *p1 = strstr((char*)bff, "(");
        return (*p1);
    };
};