概要
C++26では、static_assert
に指定する表明失敗時の診断メッセージとして、文字列リテラルだけでなくユーザー定義型の文字列オブジェクトも指定できるようになる。
例えば、将来的にstd::format()
関数がconstexpr
対応した場合、それによって作られたstd::string
オブジェクトを診断メッセージとして使用できる。
仕様
static_assert
の構文において、
static_assert(定数式, 診断メッセージ);
診断メッセージが文字列リテラルでない場合、そのオブジェクトMは、以下の要件を満たすこと:
M.size()
からstd::size_t
への暗黙変換が定数式であることM.data()
から「const char
へのポインタ」への暗黙変換が定数式であること- メッセージのシーケンスに含まれる各文字が、エンコーディング指定されていない文字コード (ordinary literal encoding) であること
u8"message"
はNG"message"
はOK