shi*_*eya 4 c++ xcode clang c++11
解决问题=>查看最后的更新
我正在尝试使用,std::function但看起来只是包含<functional>不提供定义.我试图编译以下代码:
#include <functional>
std::function<int(int)> f = nullptr;
Run Code Online (Sandbox Code Playgroud)
使用c ++ 11作为编译选项:
% clang++ -c -std=c++11 t.cc
Run Code Online (Sandbox Code Playgroud)
原因:
t.cc:3:6: error: no type named 'function' in namespace 'std'
std::function<int(int)> f = nullptr;
~~~~~^
t.cc:3:14: error: expected unqualified-id
std::function<int(int)> f = nullptr;
^
2 errors generated.
Run Code Online (Sandbox Code Playgroud)
我错过了什么?我知道C++很好,但对clang ++/C++ 11来说是新手,因此我认为我缺乏重要的知识.
我在MacOS X 10.8上使用clang ++.
更新1
我在cppreference.com网站上尝试了一个示例,但它也不会编译.提供一些选择解决问题?
更新2
尝试从cppreference.com上面的示例clang++ -c -std=c++11 -stdlib=libc++11 x.cc,编译器仍然说:
x.cc:1:10: fatal error: 'functional' file not found
#include <functional>
^
1 error generated.
Run Code Online (Sandbox Code Playgroud)
哪里有功能?我想我应该给予-stdlib=libc++11或者其他什么,但它也不起作用:
clang: error: invalid library name in argument '-stdlib=libc++11'
Run Code Online (Sandbox Code Playgroud)
我怎么能找到参数列表-stdlib?(注意:在手册页中,只有可用的选项,libc++而且libstdc++它们都不起作用)
或功能只是不起作用?
小智 6
这与功能的定义无关.您没有链接器错误.您有编译器错误.据推测,问题是安装在真正的sysroot中的BSD/GNU/Darwin标准库不支持C++ 11.您必须通过指定-stdlib=libc++编译器标志来使用Clang附带的那个.