自分自身に暗黙の変換関数を定義するとします。
#include <iostream>
class Foo {
public:
operator Foo() {
std::cout << "wha??\n";
return Foo();
}
};
void f(Foo f) {}
int main() {
Foo foo;
f(foo);
}
なぜ私はこれを定義するのでしょうか? 直接書くことはありませんが、私が書いているテンプレート クラスでテンプレートをインスタンス化することで発生する可能性があります。これが発生した場合、変換関数の定義が事実上ノーオペレーションであり、実際に呼び出すことが不可能であることを願っています。
上記のプログラムは何も出力しません (これはすばらしいことです)。この変換関数が実際に呼び出される状況はありますか?