template< class T >
struct is_class;
std::is_class
is a UnaryTypeTrait.
Checks whether T
is a non-union class type. Provides the member constant value which is equal to true, if T
is a class type (but not union). Otherwise, value is equal to false.
If the program adds specializations for std::is_class
or std::is_class_v
, the behavior is undefined.
template< class T >
constexpr bool is_class_v = is_class<T>::value;
T
is a non-union class type, false otherwise
#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>); enum class 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() {}[edit] See also checks if a type is a union type
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4