В последнем документе об ограничениях шаблона представлен новый набор инструментов для ограничения аргументов шаблона. Также в C ++ предусмотрены 14 шаблонов переменных. Шаблоны переменных позволяют, среди прочего, определять константы с параметризацией типа.
Нет никаких упоминаний о том, как эти функции могут взаимодействовать. Используя канонический пример числа Пи, мы могли бы получить следующее:
template<Integral T>
constexpr double pi(3.141592653589793238);
template<Floating_point T>
constexpr T pi(3.1415926535897932384626433832795029L);
Это приведет к тому, что числовое преобразование C / C ++ из целого в двойное. Это также предотвратило бы создание экземпляров с совершенно нерелевантными типами. (Глядя на это, мы могли бы захотеть заменить Floating_point чем-то, что требует ctor с плавающей запятой для поддержки сложных.)
Я что-то пропустил в одной из газет или это в разработке? Может, это бесплатно и не стоит упоминать?
Integral
, и в любом случаеdouble
не является целым. Похоже, вы пытаетесь специализироватьconstexpr
шаблон. Это то, что вы хотите? Как это связано с ограничениями? Вы имеете в виду концепции? Concepts Lite находится в C ++ 14, но, опять же, это не относится к вашему примеру. - person cdmh   schedule 25.07.2013