3
には、その後、私は呼んしようとしている...私は2つのオーバーロード、整数と整数への他の参照を受け入れるものを定義しています次のコードで参照受付機能
#include <stdio.h>
void foo(int) { printf("foo(int)\n"); }
void foo(int&) { printf("foo(int&)\n"); }
をオーバーロードを選択します2つのオーバーロード
int main(int argc, const char *argv[]) {
foo(3); // Calls foo(int)
int x = 3;
foo(x); // <--- compilation error (ambiguous overload)
int& y = x;
foo(y); // <--- still ambiguous
return 0;
}
質問は...どのようにint&
過負荷を選択することができますか?
呼び出すことができない場合は、それをコンパイルするのは何ですか?
静的キャスト(foo)(x); ' –
あなたも理由は尋ねているので、ダイレクトダイプではないかもしれません。質問/ 1336 8474/ambiguous-call-to-overloaded-function-int-and-int) – George
なぜ単純に過負荷の存在を診断することによって文法に複雑さを追加するのですか?それらは依然として2つの有効な過負荷です。問題はコールサイトで(それを回避する方法で)。 – StoryTeller