请参阅https://en.cppreference.com/w/cpp/io/basic_ios/operator_bool和https://en.cppreference.com/w/cpp/io/basic_ios/operator!。
我认为这operator!是多余的,因为用户定义的operator bool.
以下 C++ 代码无法编译:
template <typename T>
void f(int, bool = true);
void g()
{
auto h = f<int>;
h(1); // error: too few arguments to function
}
Run Code Online (Sandbox Code Playgroud)
相反,我必须h使用第二个参数调用:
h(1, true);
Run Code Online (Sandbox Code Playgroud)
为什么不起作用h(1)?
有没有一种简单的方法来给模板函数添加别名来绑定模板参数,同时保留默认的函数参数?