使用 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
然后就可以了
是我做错了什么还是编译器错误?
最佳答案
我没有运行 2014,但您可能需要指定内部 lambda 的返回类型(可能默认为 void),使用 '-> char*',如下所示:
auto gp = [&](BYTE* buff) {
auto gp1 = [](char* bff, char** p1) -> char* {
*p1 = strstr((char*)bff, "(");
return (*p1);
};
};
关于c++ - 无法在 VS 14 CTP : conditional expression of type 'void' is illegal 中使用 auto 声明 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24052733/