Je veux vérifier si un type a une entrée dans std :: numeric_limits. Lorsque le type est un tableau - (ou peut-être pas un nombre?), J'obtiens une erreur de compilation. Cela m'empêche de détecter et de ramifier selon que le type est supporté dans std :: numeric_limits. J'apprécierais n'importe quel aperçu que quelqu'un veut partager.Détection de la spécialisation de std :: numeric :: type <T> pour un type non numérique 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"
);
Pouvez-vous donner un exemple de exactement comment/où vous voulez "détecter et branchez"? Je devine quelque chose dans un modèle, plutôt que pour un type fixe comme 'char [20]', dont nous connaissons tous la réponse? – aschepler
Définir "détecter et ramifier". Le but de 'static_assert' est, en effet, d'émettre une erreur de compilation si l'assertion échoue. Si vous avez besoin d'un résultat différent, vous devez expliquer ce que c'est. –