ApplellVM 9.1.0具有C 17支持?还是CMAKE/ENV问题
AppleLLVM 9.1.0 with c++17 support? or was it a cmake/env issue?
我一直在使用ApplellVM 9.1.0(Clang-902.0.39.1(上使用OS X 10.13,示例如下
#include <experimental/optional>
#include <iostream>
template<typename T>
class p {
public:
T value;
p(T& t):value(t){}
p(T const& t):value(t){}
~p() = default;
};
template <typename T1, typename T2>
constexpr auto operator+(p<T1> const &lhs, p<T2> const &rhs) noexcept {
return p<decltype(lhs.value + rhs.value)>(lhs.value + rhs.value);
}
int main(int, char* []) {
p<int> v1(20);
p<int> v2(10);
auto v3 = v1+v2;
std::cout << v3.value <<std::endl;
return 0;
}
用
编译c++ -std=c++17 -o test test.cpp
它非常适合我只是尝试使用N3638中提到的返回类型扣除的新功能,该功能提出了书面样式为
template<typename T> auto f(T t);
但是,当我要在我的cmake(3.11.1(有组织的项目中使用它时,几个标志显示如下:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_FLAGS "-Wall -fpermissive -Wno-unused-parameter -Werror")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb3")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -ggdb3 -DNDEBUG")
它未能编译告诉我"'自动'返回而无需落后返回类型;推导的返回类型是C 14扩展名"。而且我尝试了下一个标志也获得了相同的结果:
set(CMAKE_CXX_FLAGS "-std=c++17")
它看起来很像环境设置失败的CMAKE问题,而我对应该设置的CMAKE标志感到困惑以启用这一新功能?还是与编译器相关的问题?
Sry Guys。
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
效果绝对很好。问题是由一个旧版本的依赖库引起的,该库在C 11中使用了" std :: auto_ptr"并在C 17中删除(但是CMakelists中的C 11中仍在C 11中删除(,因此cmakelists专门用于C 11标准。问题解决了。在我的Ubuntu Env中,旧版本库由Apt-Get更新。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- enum是C++中的宏变量还是整数变量
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用CMake创建QML插件
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- cmake如何在fedora工作站中找到boost静态库包
- 使用CMake检测支持的C++标准
- 在命名空间中定义函数还是限定函数
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 如何使用CMake编译.proto文件来生成.grpcp.pb.cc和.grpc.pb.h文件
- cmake在我的项目中所需的所有静态库都不成功
- 架构决策:返回std::future还是提供回调
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 无法链接 CMake 中的本地库
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何在Ubuntu中使用cmake设置qt4
- 我应该安装 .cmake 文件来共享/cmake 还是 lib/cmake?
- ApplellVM 9.1.0具有C 17支持?还是CMAKE/ENV问题