iso 20.9.4.3类型属性[meta.unary.prop]不受g ++的libstdc ++ - v3完全支持; e.g:
wget -O - https://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/include/std/type_traits 2>/dev/null | grep "still unimplemented"
// is_trivially_copyable (still unimplemented)
/// is_trivially_constructible (still unimplemented)
/// is_trivially_default_constructible (still unimplemented)
/// is_trivially_copy_constructible (still unimplemented)
/// is_trivially_move_constructible (still unimplemented)
/// is_trivially_assignable (still unimplemented)
/// is_trivially_copy_assignable (still unimplemented)
/// is_trivially_move_assignable (still unimplemented
因此,至少据我所知,基于gcc安装的clang构建将继承这种缺乏实现;至少
clang version 3.5.0 (212792)
我几个小时前用
制作g++ (Debian 4.8.3-3) 4.8.3
(但不过以某种方式使用gcc-4.9包括)不支持提到的那些类型特征。
但不知何故Coliru http://coliru.stacked-crooked.com/
有一个clang安装,如果用
调用clang++ -std=c++11 -stdlib=libc++ -O2 -Wall -Wextra -pedantic -pthread -pedantic-errors main.cpp -lm -lsupc++ && ./a.out
编译,例如此
http://en.cppreference.com/w/cpp/types/is_constructible
没有抱怨的例子。
所以必须有编译或设置clang的方法,至少在Linux上有标题,这些标题也支持那些尚未由libstdc ++实现的类型特征。
另外,llvm有这个
http://libcxx.llvm.org/type_traits_design.html
总结编译,但我不知道如何使用那些“__”内在函数;他们显然不会住在std :: nor ::;-
那么 - 如何在Linux上设置或配置最近的llvm / clang,以便clang ++拥有大部分可用的类型特征?
附录用于评论
clang++ -std=c++11 -stdlib=libc++ -O2 -Wall -Wextra -pedantic -pthread -pedantic-errors test_type_traits.cxx -lm -lsupc++
test_type_traits.cxx:1:10:
致命错误:找不到'iostream'文件 #包括 ^ 生成1个错误。
答案 0 :(得分:0)
只需安装libc ++ 完全
像魅力一样构建和安装,现在clang确实在调用
时具有那些类型特征clang++ -std=c++11 -stdlib=libc++ <other arguments>