繁体   English   中英

错误:在 lambda 参数声明中使用 'auto' 仅适用于 -std=c++1y 或 -std=gnu++1y [-Werror]

[英]error: use of 'auto' in lambda parameter declaration only available with -std=c++1y or -std=gnu++1y [-Werror]

我有一个模板函数,可以将其放入输出流中,而无需担心类型。 这是一个 C++ 14 兼容代码,它具有 auto 作为 lambda 的参数。 但是,我需要我的编译器设置为 C++ 11。我做了哪些更改来解决这个问题,以便它也适用于 C++ 11。

这是我的代码

template<class... Args >
std::string build_message( Args&&... args )
{

    auto aPrintImplFn = [](auto& os, auto&& ... ts) {
        // expression (void) just to suppress the unused variable warning
        (void)std::initializer_list<char> { (os << ts, '0')... };
    };

    std::ostringstream out;
    aPrintImplFn(out, std::forward<Args>(args)...);
    return out.str();
}

auto改为显式类型,如下

#include <sstream>
#include <string>
#include <iostream>
template<class... Args >
std::string build_message( Args&&... args )
{

    auto aPrintImplFn = [](std::ostringstream & os, Args&& ... ts) {
        // expression (void) just to suppress the unused variable warning
        (void)std::initializer_list<char> { (os << ts, '0')... };
    };

    std::ostringstream out;
    aPrintImplFn(out, std::forward<Args>(args)...);
    return out.str();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM