微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C++11兰达汽车

如何解决C++11兰达汽车

我有一个代码(C++11):

...

ATTRIBUTE_PROBLEM getAttrWithCustomType(const std::string& attrName) {
   auto attr = std::find_if(
                attributes.cbegin(),attributes.cend(),[&attrName](const auto& pair) { return pair.first == attrName; }
  ...

}

std::vector<std::pair<std::string,std::string>> attributes;

我的 CMake 文件中的配置:

set_target_properties(HlsParser PROPERTIES
    CXX_STANDARD 11
    CXX_STANDARD_required YES
    CXX_EXTENSIONS NO
    )

gcc 版本:gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516

如果这段代码写在 .hpp 文件中,我会得到下一个错误。这是预期的行为,C++11 不支持泛型 lambda。

error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
                 [&attrName](const auto& pair) { return pair.first == attrName; }

我的问题:

但是,如果我将此代码放入 .cpp 文件中,则编译时不会出错。有人能解释一下这种行为吗?

已编辑 (07.07.2021)

项目示例:https://github.com/ValentinNikin/TempCMakeProject

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。