【问题标题】:no member named 'make_unique' in namespace 'std'命名空间“std”中没有名为“make_unique”的成员
【发布时间】:2017-09-14 08:34:53
【问题描述】:

我使用的是 cmake 3.9.2,我的 CMakeLists.txt 中有以下几行:

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall")

我也使用 clang 4.0 作为我的编译器,我的操作系统是 Ubuntu Trusty。在安装 clang 时,我添加了以下存储库:

deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main
deb-src http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main
ppa:ubuntu-toolchain-r/test

并运行命令:

# apt-get install clang-4.0 libstdc++6 libc++1

毕竟我仍然收到错误

error: no member named 'make_unique' in namespace 'std'

同时在我的 OS X 10.11 上,一切都可以顺利构建和运行。在 Ubuntu Zesty 上我也没有任何问题。我在 Ubuntu Trusty 上做错了什么?

【问题讨论】:

  • 包括<memory>?
  • @RickAstley 是的,包括在内
  • 您的 CXX_FLAGS 很可能有问题。我的猜测是它们链接到 C++11(即 -std=c++11)而不是 C++14(即 -std=c++14),其中引入了 std::make_unique。
  • @101010 我跑了make VERBOSE=1,我得到了/usr/bin/clang++-4.0 -I/project_path/../. -g -Wall -stdlib=libstdc++ -std=c++14 -O3 -DNDEBUG -std=gnu++14 -m64 -o CMakeFiles/.../file.cpp
  • @CaptainRR 删除 -std=gnu++14-o 放错地方

标签: ubuntu c++14 clang++


【解决方案1】:

看来我解决了这个问题。我需要安装libc++-dev 并确保-stdlib=libc++ 在命令行中。

【讨论】:

    猜你喜欢
    • 2017-02-13
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多