Шаблон функции:Почему нам нужно ключевое слово template в C++?
template<class T> T
max(T a, T b){return (a > b)? a: b;}
при использовании его:
max<int>(a, b); // Yeah, the "<int>" is optional most of the time.
, но если вы позволите, мы можем написать шаблону так:
T max<class T>(T a, T b){return (a > b)? a: b;}
//I know the return type T is not in its scope, don't focus on that.
Таким образом, мы можем сохранить ту же форму декларации и использования, как и обычная функция. и даже не нужно вводить и вводить ключевое слово «шаблон». Я думаю, что шаблон шаблона будет таким же? Так есть ли другая причина, чтобы шаблон стал той формой, которую мы знаем сегодня?
я изменил форму, так что вы не сосредоточены на тип возвращаемого значения:
auto max<class T>(T a, T b) -> T {return (a > b)? a: b;}
//This is C++11 only and ugly i guess.
//The type deduce happens at compile time
//means that return type really didn't to be a problem.
Это просто синтаксис, который был выбран. Я считаю, что в этом нет никакой реальной причины. Это простое решение. –
Вы опоздали всего на несколько месяцев, когда их приняли C++ 11. Теперь вам нужно ждать следующие 20 лет. –
Я не помню, чтобы такой вариант рассматривался в _Design и Evolution of C++ _, что является AFAIK лучшим источником для обоснования для вещей, принятых в то время (около 20 лет назад). – AProgrammer