【发布时间】:2016-06-06 13:34:33
【问题描述】:
当同时使用-stdlib=libstdc++ 和-std=c++11 时,我在使用带有initializer_list 参数的空函数编译简单的Hello 文件时遇到问题
如果我只使用-std=c++11(这意味着用libc++编译)
然后文件编译并打印 Hello!
如果我评论 function_test 并且我同时使用 -std=c++11 和 -stdlib=libstdc++
然后文件编译并打印 Hello!
如果我保留函数function_test 并同时使用-std=c++11 和-stdlib=libstdc++
然后我收到以下错误:
$ g++ -stdlib=libstdc++ -std=c++11 -o test test.cpp
test.cpp:1:10: fatal error: 'initializer_list' file not found
#include <initializer_list>
^
1 error generated.
这是我的文件
#include <initializer_list>
#include <iostream>
using namespace std;
void function_test(initializer_list<int> something){}
int main(int argc, char * argv[])
{
cout << "Hello!" << endl;
function_test({0});
return 0;
}
这是我的苹果clang版本
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr
--with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin15.3.0
Thread model: posix
【问题讨论】:
-
包含目录中的 intializer_list 是否可用?
-
一个简单的
g++ --std=c++11 -o test test.cpp就可以了。 -
@Jean-BaptisteYunès 是的,正如我在问题中所说,这很好用。但是我需要使用另一个用 libstdc++ 编译的库,所以我需要用 libstdc++ 编译我的文件,而不是使用 libC++ 的 clang 标准库
-
@Pooya 这就是您对标准库头文件的期望,对吧?
-
当然在切换标准库实现的时候会用到不同的头文件。几乎所有的 C++ 标准库都是只有头文件的。
标签: c++ c++11 clang llvm libstdc++