Я хотел бы знать, как работает этот шаблон.Почему мы использовали T{} для инициализации параметра шаблона?
T{}
template<typename T, T Val = T{}> T bar();
В фигурных скобках инициализация списка , введена в C ++ 11.
It значение-инициализирует параметр шаблона Val, который является шаблоннымвведите T.
Val
T
Вы могли бы сделать то же самое:
template<typename T, T Val = T()> T bar();
Сведения о преимуществах и недостатках см .: Почему инициализация списка (с использованием фигурных скобок) лучше, чемальтернативы?