最近、explicit
指定子について学びました。
次があるとします。
f( W, W, W );
今私たちがするなら
f( 42, 3.14, "seven" );
コンパイラは、次の暗黙的な変換を試みます。
f( W(42), W(3.14), W("seven") );
W に一致するコンストラクターを定義した場合、つまり:
W(int);
W(double);
W(std::string);
...それは成功します。
ただし、最初のものを明示的にすると、次のようになります。
explicit W(int);
...これにより、暗黙的な変換が無効になります。
あなたは今書く必要があります:
f( W(42), 3.14, "seven" );
つまり、変換を明示的に述べる必要があります
質問に移りましょう:
次のように書くことができます。
explicit W(int,int); // 2 arguments!
これはコンパイルされます!
しかし、この構文を必要とする可能性のある対応するシナリオは見当たりません。
誰でも最小限の例を提供できますか?