clang ++中的std :: underlying_type支持

时间:2015-09-17 18:02:06

标签: c++ c++11 llvm std clang++

我假设应clang++ -std=c++11 #include <iostream> #include <type_traits> enum class A {a,b,c}; enum B : short {x,y,z}; int main() { typedef std::underlying_type<A>::type A_under; // int typedef std::underlying_type<B>::type B_under; // short std::cout << std::boolalpha; std::cout << "typedefs of int:" << std::endl; std::cout << "A_under: " << std::is_same<int,A_under>::value << std::endl; std::cout << "B_under: " << std::is_same<int,B_under>::value << std::endl; return 0; } 启用C ++复合类型更改支持。但我无法使用clang编译此代码:

$ clang++ underlyingtype.cpp -std=c++11
underlyingtype.cpp:10:16: error: no type named 'underlying_type' in namespace 'std'
  typedef std::underlying_type<A>::type A_under;   // int

我收到此错误:

lashgar@fengdu:~/code$ clang++ --version
clang version 3.8.0 (http://llvm.org/git/clang.git 1ad799453a2e54cfded555a03fd58dbd102c5f62) (http://llvm.org/git/llvm.git af5ff60200812e518c72a022fb4c66b9a5f0116a)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/lashgar/opt/llvm/bin

知道为什么会这样吗?

更多信息:

1 个答案:

答案 0 :(得分:2)

以下是指向online compiler with libstdc++ 4.6.4的链接,可以重现此错误。

只需确保获取标准库的版本即可。 libstdc ++ 4.7及更高版本或libc ++ 3.0及更高版本应该可以正常工作。