使用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
,那么它可以正常工作
我做错了什么或是编译器错误?
答案 0 :(得分:0)
我没有运行2014,但您可能需要指定内部lambda的返回类型(可能默认为无效),使用&#39; - &gt;字符*&#39;像这样:
auto gp = [&](BYTE* buff) {
auto gp1 = [](char* bff, char** p1) -> char* {
*p1 = strstr((char*)bff, "(");
return (*p1);
};
};