この答えは、私が答えたときの質問に関連しています。
OPは質問に追加し続けます、そして私はそれを追いかけるつもりはありません…
はい、あります。はい、あいまいさを解決するためにキャストする必要があるのは正しいです。
#include <iostream>
void g(int& a)
{
std::cout<<"int&\n";
}
void g(int a)
{
std::cout<<"int\n";
}
int main()
{
int a = 2;
static_cast< void(*)(int&) >( g )( a );
}
注:これをVisual Studioで実行して結果ウィンドウを表示するには、[Ctrl F5]を使用するか、の最後の右中括弧にブレークポイントを設定しmain
てデバッガーで実行します。ただし、コマンドラインから実行する方がよいでしょう。最後に「ストップ」を追加する必要はありません!:-)
修正:
Dietmarは、キャストを使用して
const
値による引数のオーバーロードを呼び出す方法を回答で示しました。私はそれについても考えていませんでしたが、それを実行したい場合は(参照バージョンを考慮から除外することに限定されています)、の
const_cast
代わりにを使用してください
static_cast
。
または、引数から右辺値式を作成するだけです。たとえば、前に便利な小さな+
記号を追加します。
g( +a );
:-)