Почему std :: valarray не является арифметическим c? - PullRequest
3 голосов
/ 12 июля 2020

Я заметил, что std::is_arithmetic<std::valarray<float>> оценивается как false. Смысл valarrays не в том, чтобы облегчить перегрузку скалярного кода для «автоматической векторизации» без использования boost et c. ?

Почему он не наследует свойства arithmeti c своего шаблонного типа?

Мой вопрос не обязательно является проблемой , а скорее фундаментальным недоразумением относительно со своей стороны, поскольку мне, должно быть, не хватает некоторого философского понимания, если это действительно так.

1 Ответ

6 голосов
/ 12 июля 2020

std::is_arithmetic сообщает вам, является ли тип фундаментальным числовым c типом, например целым числом или числом с плавающей запятой. Не работает для классов. И вам не разрешено специализироваться на этом самостоятельно, поэтому вы не можете его "исправить", но вы можете написать свои собственные черты типа, которые будут делать все, что захотите.

Кстати, std::is_array<std::array<int, 5>> тоже ложно !

...