【发布时间】:2012-09-23 18:15:53
【问题描述】:
为什么带有模板函数的可选参数在 C++ 中不起作用?
(澄清:我希望了解为什么 C++ 被设计成这样是不可能的。)
#include <iostream>
template<class T1, class T2> T1 inc(T1 v, T2 u = 1) { return v + u; }
int main() { std::cout << inc(5); }
prog.cpp:在函数‘int main()’中:错误:没有匹配函数调用‘inc(int)’
【问题讨论】:
-
您可以在 C++11 中将
T2默认为int。 -
@chris:是的,但我并不总是使用 C++11。 :\
-
那么,问题是为什么它在 C++98 中不起作用?考虑到您可以添加重载
template <typename T1> T1 inc(T1 v) { return v+1; },我认为原因是“没有实质性的好处”。 C++98 已经很晚了,这样的小事不会再耽搁了。
标签: c++ templates optional-parameters