为什么我们不能将函数显式化?

use*_*963 3 c++ keyword

为什么我们不能在函数上使用explicit关键字?我想不出有一个很好的理由不允许这个(和几个相反).

为什么是这样?

Arn*_*rtz 8

通过声明函数的已删除模板版本,可以轻松实现您想要实现的内容(禁止对函数参数进行类型转换):

template <class T> void f(T) = delete;

void f(int){}

int main()
{
    double k = 4;
    f(k); //error: use of deleted function ‘void f(T) [with T = double]’
}
Run Code Online (Sandbox Code Playgroud)