A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../types/is_compound.html below:

std::is_compound - cppreference.com

template< class T >
struct is_compound;

(since C++11)

std::is_compound is a UnaryTypeTrait.

If T is a compound type (that is, array, function, object pointer, function pointer, member object pointer, member function pointer, reference, class, union, or enumeration, including any cv-qualified variants), provides the member constant value equal true. For any other type, value is false.

If the program adds specializations for std::is_compound or std::is_compound_v, the behavior is undefined.

[edit] Template parameters [edit] Helper variable template

template< class T >
constexpr bool is_compound_v = is_compound<T>::value;

(since C++17) Inherited from std::integral_constant Member constants true if T is a compound type, false otherwise
(public static member constant) Member functions converts the object to bool, returns value
(public member function) returns value
(public member function) Member types [edit] Notes

Compound types are the types that are constructed from fundamental types. Any C++ type is either fundamental or compound.

[edit] Possible implementation [edit] Example
#include <type_traits>
#include <iostream>
 
static_assert(not std::is_compound_v<int>);
static_assert(std::is_compound_v<int*>);
static_assert(std::is_compound_v<int&>);
 
void f();
static_assert(std::is_compound_v<decltype(f)>);
static_assert(std::is_compound_v<decltype(&f)>);
 
static_assert(std::is_compound_v<char[100]>);
 
class C {};
static_assert(std::is_compound_v<C>);
 
union U {};
static_assert(std::is_compound_v<U>);
 
enum struct E { e };
static_assert(std::is_compound_v<E>);
static_assert(std::is_compound_v<decltype(E::e)>);
 
struct S
{
    int i : 8;
    int j;
    void foo();
};
static_assert(not std::is_compound_v<decltype(S::i)>);
static_assert(not std::is_compound_v<decltype(S::j)>);
static_assert(std::is_compound_v<decltype(&S::j)>);
static_assert(std::is_compound_v<decltype(&S::foo)>);
 
int main()
{
    std::cout << "All checks have passed\n";
}
[edit] See also

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