c++ - 无法在 VS 14 CTP : conditional expression of type 'void' is illegal 中使用 auto 声明 lambda

标签 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然后就可以了

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

最佳答案

我没有运行 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/

相关文章:

c++ - 在 Windows 上通过调用 popen 确定 PID

C++ 不显示带大小数的数字

c# - Selenium.WebDriver 3.0.1 与 netcoreapp1.1 不兼容 - C#, VS 2017 Community for Mac

c# - 如何让 Visual Studio 2015 xproject (project.json) 引用依赖项目的最高框架

c++ - GetOpenFileName() 正在干扰 SFML

c++ - MSVC 是否错误处理了类作用域静态变量与整数常量初始值设定项的链接?

C++ 将用户输入作为数组的维数?

c++命名空间最佳实践困境

visual-studio - 使用 Crystal Reports 组编辑器时 Visual Studio 崩溃

c++ - 返回实例导致 'attempting to reference a deleted function' 错误