型がstd :: numeric_limitsに項目を持っているかどうかを確認したいのですか?型が配列の場合(あるいは数値ではない場合)、コンパイラエラーが発生します。これにより、型がstd :: numeric_limitsでサポートされているかどうかに基づいて検出と分岐ができなくなります。私は誰もが共有したいと思うどんな洞察にも感謝します。いくつかの非数値型のstd :: numeric :: type <T>の特殊化の検出T
// the following provokes compiler error on Clang
// Function cannot return array type 'type' (aka 'char [20]')
static_assert(
! std::numeric_limits<char[20]>::is_specialized,
"! std::numeric_limits<char[20]>::is_specialized"
);
// invokes static assert on compile as expected
static_assert(
std::numeric_limits<char[20]>::is_specialized,
"std::numeric_limits<char[20]>::is_specialized"
);
「検出して分岐する」方法の例を教えてください。私たちは皆が答えを知っている 'char [20]'のような固定型ではなく、テンプレートの中で何かを推測していますか? – aschepler
"検出と分岐"を定義します。 'static_assert'の目的は、実際にアサーションに失敗した場合にコンパイルエラーを発行することです。別の結果が必要な場合は、それが何であるかを説明する必要があります。 –