使用Travis-CI
我正在尝试构建一个使用的C ++项目std::make_unique
。但是我得到一个构建错误:
no member named 'make_unique' in namespace 'std'
mFiles.emplace_back(std::make_unique<File>(*this, rec));
我已经包括了memory
,并且此代码在VS2013和gcc 4.8中使用编译-std=c++14
。如果在clang 3.4中使用此标志,则会出现错误:
error: invalid value 'c++14' in '-std=c++14'
根据clang文档:
http://clang.llvm.org/cxx_status.html
我应该使用,-std=c++1y
但这仍然相同no member named 'make_unique' in namespace 'std'
。那么如何使它工作呢?
这不依赖于编译器,而是依赖于标准库的实现。std::make_unique
不是核心语言功能,而是库功能。
检查libstdc++
Travis使用的版本。
根据GCC 4.9更改日志,在GCC 4.9发行时std::make_unique
引入了libstdc++
该更改日志。
如果Travis使用的是4.9之前的GCC版本,则很有可能libstdc++
还没有该版本std::make_unique
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句