C ++ вызывает явный конструктор шаблонов

Можете ли вы сказать мне, как явным образом вызывать конструктор шаблонов (в списке инициализаторов)? например:

struct T { template T(); }; struct U { U() : t() {} //does not work T t; }; 

благодаря

Это невозможно. Стандарт также имеет примечание об этом на 14.8.1/7

[Примечание: поскольку список аргументов явного шаблона следует за именем шаблона функции, а так как шаблоны функций членов-членов и шаблоны-функции-члены-конструкторы вызываются без использования имени функции, нет способа предоставить явный список аргументов шаблона для этих шаблонов функций. ]

Если вы можете жить с ним, вы можете работать с ним

 struct T { template T(identity); }; struct U { U() : t(identity()) {} T t; }; 

Учитывая identity как она определена в boost

 template struct identity { typedef T type; }; 
  • Аргументы шаблона по умолчанию для шаблонов функций
  • Шаблоны: функция шаблона не очень хорошо работает с функцией члена шаблона classа
  • Laravel 5 - глобальная переменная вида Blade, доступная во всех шаблонах
  • AngularJS - визуализация на стороне сервера
  • Как использовать class в Java?
  • Каковы некоторые параметры шаблона шаблона?
  • Преимущества авто в параметрах шаблона в C ++ 17
  • Может ли область переменной Jinja расширяться во внутреннем блоке?
  • Когда использовать std :: forward для пересылки аргументов?
  • явная специализация функции члена classа шаблона
  • Может ли шаблон функции члена classа C ++ быть виртуальным?
  • Давайте будем гением компьютера.