И если это работает для операторов, почему бы не работать таким же образом для функций?

ажется немного отсталым для меня, но это работает:

#include <iostream>

namespace nTest
{
  struct cTest {};

  void fTest(cTest& x)
  {
    std::cout << "nTest::fTest(cTest&) called" << std::endl;
  }
}

int main(void)
{
  nTest::cTest x;
  fTest(x); //Weird! fTest is resolved since its parameter belongs to nTest.
  return 0;
}

Обычно вам нужен nTest :: для доступа к fTest, но его параметр, который принадлежит nTest, похоже, добавляет nTest в список возможных областей, в которых нужно искать fTest. Мне кажется странным, что область действия параметра влияет на поиск функции.

Это хорошо компилируется в GCC, но мне интересно, переносимо ли это использование? Каково официальное определение этого ограничивающего механизма?

Ответы на вопрос(3)

Ваш ответ на вопрос