Это по умолчанию , так же, как и для аргументов функции.Таким образом, вы можете использовать Square_<>
, чтобы обозначать то же самое, что и Square_<int>
, когда вы не хотите выбирать другой тип по умолчанию.
Например, это:
#include <iostream>
#include <typeinfo>
void function(int i = 42)
{
std::cout << "function(" << i << ")\n";
}
template <typename T = int>
void function_template()
{
std::cout << "function_template<" << typeid(T).name() << ">\n";
}
int main() {
function();
function(56);
function_template<>();
function_template<double>();
}
дает мне вывод
function(42)
function(56)
function_template<i>
function_template<d>
(напечатанные имена типов int и double могут отличаться в вашей системе)