UdonLibrary 1.0.0
機械システム研究部 C++ ライブラリ
読み取り中…
検索中…
一致する文字列を見つけられません
Udon::Traits::AlwaysFalse< T > 構造体テンプレート

static_assert 失敗遅延用の型 [詳解]

#include <Udon/Traits/AlwaysFalse.hpp>

Udon::Traits::AlwaysFalse< T > の継承関係図

詳解

template<typename T>
struct Udon::Traits::AlwaysFalse< T >

static_assert 失敗遅延用の型

覚え書き
C++20 までは static_assert に false を渡すとテンプレートの実体化する前にエラーになるため、 この型を用いて実体化時点で static_assert が失敗するようにする。

例:

template <typename T, typename std::enable_if<std::is_integral<T>::value>::type* = nullptr> void f() // <- Tが整数であるとき、f() は実体化されてはいけないとする { static_assert(Udon::Traits::AlwaysFalse<T>::value, "T is integral."); }

template <typename T, typename std::enable_if<std::is_floating_point<T>::value>::type* = nullptr> void f() // <- 実体化されるべき関数 { }

f<int>(); // <- 実体化された時点で static_assert が失敗する f<float>(); // <- int型で実体化されていないので static_assert は失敗しない


この構造体詳解は次のファイルから抽出されました: