Type traits | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Compile-time rational arithmetic | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Compile-time integer sequences | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++14) |
Defined in header <type_traits> | ||
template<class T> struct is_class; | (since C++11) | |
std::is_class
is aUnaryTypeTrait.
Checks whetherT
is a non-union class type. Provides the member constantvalue which is equal totrue, ifT
is a class type (but not union). Otherwise,value is equal tofalse.
If the program adds specializations forstd::is_class
orstd::is_class_v
, the behavior is undefined.
Contents |
T | - | a type to check |
template<class T> constexprbool is_class_v= is_class<T>::value; | (since C++17) | |
value [static] | true ifT is a non-union class type,false otherwise(public static member constant) |
operator bool | converts the object tobool, returnsvalue (public member function) |
operator() (C++14) | returnsvalue (public member function) |
Type | Definition |
value_type | bool |
type | std::integral_constant<bool, value> |
namespace detail{template<class T>std::integral_constant<bool,!std::is_union<T>::value> test(int T::*); template<class>std::false_type test(...);} template<class T>struct is_class: decltype(detail::test<T>(nullptr)){}; |
#include <type_traits> struct A{};static_assert(std::is_class<A>::value); class B{};static_assert(std::is_class_v<B>);static_assert(not std::is_class_v<B*>);static_assert(not std::is_class_v<B&>);static_assert(std::is_class_v<const B>); enumclass E{};static_assert(not std::is_class<E>::value); union U{class UC{};};static_assert(not std::is_class_v<U>);static_assert(std::is_class_v<U::UC>); static_assert(not std::is_class_v<int>); static_assert(std::is_class_v<struct S>,"incomplete class");static_assert(std::is_class_v<class C>,"incomplete class"); int main(){}
(C++11) | checks if a type is a union type (class template)[edit] |