122得票1回答
为什么在C++20中std::is_pod被弃用了?

在C++20中,std::is_pod已被弃用。 这个选择的原因是什么?我应该使用什么来代替std::is_pod来判断一个类型是否实际上是POD?

119得票5回答
这个is_base_of特性的实现是如何工作的?

以下代码是如何工作的? typedef char (&yes)[1]; typedef char (&no)[2]; template <typename B, typename D> struct Host { operator B*() const;...

90得票2回答
为什么你可以通过使用std::is_const和std::is_reference来实现std::is_function?

以下是如何实现std::is_function的方法? template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::v...

88得票3回答
琐碎的 vs. 标准布局 vs. POD

简单来说,平凡类型、标准布局类型和POD类型有什么区别? 具体而言,我想确定对于任何模板参数T,new T是否不同于new T()。 我应该选择哪个type traits:is_trivial、is_standard_layout和is_pod? (另外一个问题是,这些type trait...

63得票5回答
一个Trait和一个Policy之间有什么区别?

我有一个类,我正在尝试配置它的行为。template<int ModeT, bool IsAsync, bool IsReentrant> ServerTraits; 然后稍后我有了我的服务器对象本身:template<typename TraitsT> class S...

63得票5回答
为什么没有std :: is_struct类型特性?

我看到为了检查类型 T 是否为类,可以使用以下代码: bool isClass = std::is_class<T>::value; 它对于类和结构体都返回true。我知道在C++中它们几乎是相同的东西,但我想知道为什么在类型特征中没有区分它们。检查这种区别总是没有用的吗?还...

57得票2回答
具有两个参数的decltype是什么?

编辑,为了避免混淆: decltype 不接受两个参数。请参见答案。 以下两个结构体可用于在编译时检查类型 T 上是否存在成员函数: // Non-templated helper struct: struct _test_has_foo { template<class...

56得票1回答
Eric Niebler的std::is_function实现是如何工作的?

上周Eric Niebler 发推 了一个非常简洁的实现方法,用于std::is_function 特性类: #include <type_traits> template<int I> struct priority_tag : priority_tag<I...

50得票1回答
如何检查一个类型是否是std::array类模板的特化

有没有办法检查类型 T 是否是任意类型和大小的 std::array? 我可以检查特定的数组,例如: is_same<T, std::array<int,5>>::value 但我想要确认一下,T 是 std::array 的任何实例化。类似下面这样的(当然,这...

50得票1回答
C++20 std::common_reference 的目的是什么?

C++20 引入了 std::common_reference。它的作用是什么?能否举个使用例子?