且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

为什么没有模板和默认参数?

更新时间:2023-11-30 22:11:52

您当然可以;将默认参数放在声明上,而不是定义上.

You certainly can; put the default argument on the declaration, not the definition.

将默认值放置在定义的参数列表中,而不是在声明的参数列表中,这是添加的额外功能,不适用于函数模板:

Putting the default in the definition's argument list instead of the declaration's is an added extra that is not available for function templates:

[C++14: 8.3.6/4]:对于非模板函数,可以在同一作用域的函数的后续声明中添加默认参数. [..]

[C++14: 8.3.6/4]: For non-template functions, default arguments can be added in later declarations of a function in the same scope. [..]

我真的不知道为什么有这个限制.

I don't really know why this restriction is in place.

类似规则:

[C++14: 8.3.6/6]:除类模板的成员函数外,出现在类定义之外的成员函数定义中的默认参数将添加到由类定义中的成员函数声明提供的一组默认参数中. [..]

[C++14: 8.3.6/6]: Except for member functions of class templates, the default arguments in a member function definition that appears outside of the class definition are added to the set of default arguments provided by the member function declaration in the class definition [..]