Bjarne会犯错吗?(虽然解释模板),或者我还是不明白?

The*_* do 5 c++ templates

伙计们,我正在从"The C++ Programming Language 3rd ed"做练习.在页340上有一个功能的例子:

template <class T, class C = Cmp<T> > // Here is a default argument
// But as far as I'm concerned it's illegal to have a default argument in
// a function template
        int compare (const String<T>& str1, const String<T>& str2)
        {
        /*Some code*/
        }
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:
书中是否有错误或者我错了?

AnT*_*AnT 9

是的,在这种情况下,这本书是错误的.在函数模板声明中使用默认模板参数确实是非法的.

您可以在http://www2.research.att.com/~bs/3rd_issues.html找到该问题的参考

  • 而且,FWIW,它们被允许在C++ 0x中. (2认同)