假设我给自己定义了一个隐式转换函数:
#include <iostream>
class Foo {
public:
operator Foo() {
std::cout << "wha??\n";
return Foo();
}
};
void f(Foo f) {}
int main() {
Foo foo;
f(foo);
}
我为什么要定义这个?好吧,我永远不会直接编写它,但它可以通过我正在编写的模板类中的模板实例化来实现。如果发生这种情况,我希望定义转换函数实际上是一个空操作,并且不可能实际调用。
上面的程序什么也不打印(这很棒)。是否有任何情况下会实际调用此转换函数?