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++代碼,並在標準的地方可以在此找到?