【发布时间】:2013-07-25 04:42:47
【问题描述】:
问题已解决 => 见最后更新
我正在尝试使用 std::function,但似乎只包含 <functional> 并没有提供定义。我尝试编译以下代码:
#include <functional>
std::function<int(int)> f = nullptr;
使用 c++11 作为编译选项:
% clang++ -c -std=c++11 t.cc
原因:
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.
我错过了什么?我很了解 C++,但对 clang++/C++11 很陌生,因此我猜想我缺乏重要的知识。
我在 MacOS X 10.8 上使用 clang++。
更新 1
我已经尝试过a sample at cppreference.com site,但它也不会编译。提供一些选项来解决问题?
更新 2
使用clang++ -c -std=c++11 -stdlib=libc++11 x.cc 尝试了cppreference.com 的上述示例,编译器仍然显示:
x.cc:1:10: fatal error: 'functional' file not found
#include <functional>
^
1 error generated.
功能在哪里?我想我应该给-stdlib=libc++11 或其他任何东西,但它也不起作用:
clang: error: invalid library name in argument '-stdlib=libc++11'
如何找到-stdlib 的参数列表? (注意:在手册页中,只有libc++ 和libstdc++ 可用的选项都不起作用)
或者只是功能不起作用?
【问题讨论】:
-
你编译成C++11了吗?
-
你通过
-std=c++11了吗? -
正如你在上面看到的命令行,我正在传递 -std=c++11。
-
@H2CO3 我今天可能比平时慢了一点。
-
是的,我知道。尝试了 libc++、libstdc++,然后确保我尝试了 libc++11(作为最后的手段),因为除了手册页之外我找不到任何列表。