#include <string>
template
<
typename CharType,
template<class, class, class> class StringType = std::basic_string
<CharType, std::char_traits<CharType>, std::allocator<CharType>>
>
void f(CharType, StringType)
{}
int main()
{
char c;
std::string str;
f(c, str);
//
// error : default template argument for
// a template template parameter must be a class template
//
}
なぜtemplate template parameter
をデフォルトにできないのですか?テンプレートテンプレートパラメータをデフォルトにできないのはなぜですか?
それはと言います"テンプレートテンプレートパラメータは***クラステンプレート***"でなければなりません。 'std :: basic_string'それ自身は*クラステンプレートです。 'std :: basic_string、std :: allocator >'はテンプレートではありません。 'std :: basic_string'テンプレートから派生した具象クラスです。 –