4

これは、「C++ Primer」第 5 版の §13.3 に記載されている問題のコードです。

void swap(Foo &lhs, Foo &rhs)
{
    using std::swap;
    swap(lhs.h, rhs.h); // uses the HasPtr version of swap
    // swap other members of type Foo
}

この本は、クラス固有のスワップが using 宣言によって隠されていないという現象に言及しており、読者に §18.2.3 を参照してもらいます。

ここに画像の説明を入力

そのセクションを読んで、これが Argument-Dependent Lookup (ADL) に関連している可能性があることに気付きました。以下は抜粋です。

ここに画像の説明を入力

しかし、まだ理解に曖昧なところがあります。私の質問は、ADL は通常のスコープ ルックアップの前に行くのか、それとも通常のスコープ ルックアップの後に行くのかということです。私の現在の理解では、ADL は通常のスコープ ルックアップの前に行われます。私が正しいと思う場合は確認が必要です。または、私が間違っていると思われる場合は、どのような間違いを犯したかを指摘してください。ありがとうございました。

4

1 に答える 1