带有指针的C++显式构造函数

AMT*_*AMT 1 c++ instantiation explicit-conversion

我最近偶然发现了一个接收单个指针参数的显式构造函数.我想知道在这种情况下是否需要显式关键字?因为没有指针的构造函数所以不能有任何隐式转换.

class Foo {
 public:
  explicit Foo(int* int_ptr);
}
Run Code Online (Sandbox Code Playgroud)

Vit*_*meo 7

以下代码:

void f(Foo) {}

int main()
{
    int* p;
    f(p);
}
Run Code Online (Sandbox Code Playgroud)
  • 无法编译explicit.

  • 没有它,幸福编译.

godbolt.org上的实例