C++ 11 introduced函数模板默认模板参数。另见Default template arguments for function templates。非最后默认模板参数的函数模板
但是看完C++标准我找不到它是合法的定义函数模板,这对于第一个模板参数使用默认模板参数,而不是其他的模板参数。
这将是如何default arguments被处理,其中所有后续参数必须有提供的默认参数的相反;或者是一个功能参数包。
默认参数和默认模板参数之间的差别似乎很奇怪乍一看,但允许结构为:
template <typename TException = std::exception, typename TObjectBuilder>
auto SwallowExceptions(const TObjectBuilder& rObjectBuilder) -> decltype(rObjectBuilder())
{
try
{
return rObjectBuilder();
}
catch (const TException&)
{
return decltype(rObjectBuilder())();
}
}
这是合法的C++代码,并在标准的地方可以在此找到?