在C++ 11标准的细化过程中,似乎is_trivially_destructible被认为是比has_trivial_destructor更好/更一致的名称.
这是一个相对较新的开发,因为我的g ++ 4.7.1仍然使用旧名称,并且已修复为符合4.8的标准:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52702
我一直懒得使用一个#if有利于我所使用的编译器:
#if TRIVIAL_DESTRUCTOR_TYPE_TRAIT_MATCHES_STANDARD
template<class T>
using is_trivially_destructible = std::is_trivially_destructible<T>;
#else
template<class T>
using is_trivially_destructible = std::has_trivial_destructor<T>;
#endif
Run Code Online (Sandbox Code Playgroud)
...但现在我正在尝试与4.8用户和其他编译器共享标准的源代码.是否有更好的技巧可以使情况检测更"自动"而不需要#define?