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++コードと標準でこれを見つけることができるどこ?