Я хочу проверить, есть ли у типа запись в std::numeric_limits. Когда тип представляет собой массив (или, возможно, не число?), я получаю сообщение об ошибке компилятора. Это не позволяет мне обнаруживать и выполнять ветвление в зависимости от того, поддерживается ли тип в std::numeric_limits. Я был бы признателен за любое понимание, которым кто-то хочет поделиться.
// 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], для которого мы все знаем ответ? - person aschepler   schedule 25.06.2017static_assertдействительно состоит в том, чтобы выдать ошибку компиляции, если утверждение не выполняется. Если вам нужен другой результат, вы должны объяснить, что это такое. - person Sam Varshavchik   schedule 25.06.2017