Chcę sprawdzić, czy typ ma wpis w std :: numeric_limits. Kiedy typ jest tablicą - (lub może nie liczbą?) Pojawia się błąd kompilatora. Zapobiega mi to wykrywanie i rozgałęzienia na podstawie tego, czy typ jest obsługiwany w std :: numeric_limits. Byłbym wdzięczny za każdy wgląd, który każdy chce udostępnić.Wykrywanie specjalizacji std :: numeric :: type <T> dla niektórych typów nieliczbowych 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"
);
Czy możesz podać przykład dokładnie, jak/gdzie chcesz "wykryć i rozgałęzić"? Zgaduję coś wewnątrz szablonu, zamiast stałego typu, takiego jak "char [20]", na który wszyscy znamy odpowiedź? – aschepler
Zdefiniuj "wykrywanie i rozgałęzianie". Celem 'static_assert' jest w istocie wydanie błędu kompilacji, jeśli asercja się nie powiedzie. Jeśli potrzebujesz innego wyniku, musisz wyjaśnić, co to jest. –