とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

type_traits入門 std::is_void

std::is_void

template <class T>
struct is_void;

is_void は T が void のときに true を返すメタ関数。cv修飾子を無視する。

#include<type_traits>

static_assert(std::is_void<void>::value == true, "::value");
static_assert(std::is_same<std::is_void<void>::value_type, bool>::value, "::value_type");
static_assert(std::is_same<std::is_void<void>::type, std::true_type>::value, "::type");
constexpr bool test = std::is_void<void>(); // constexpr operator bool()
static_assert(test == true, "");

static_assert(std::is_void<void const>::value == true, "");
static_assert(std::is_void<void volatile>::value == true, "");
static_assert(std::is_void<void const volatile>::value == true, "");

static_assert(std::is_void<void*>::value == false, "");
static_assert(std::is_void<void ()>::value == false, "");
static_assert(std::is_void<void (*)()>::value == false, "");
static_assert(std::is_void<void (&)()>::value == false, "");
static_assert(std::is_void<int>::value == false, "");

int main(){}