И если это работает для операторов, почему бы не работать таким же образом для функций?
ажется немного отсталым для меня, но это работает:
#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, но мне интересно, переносимо ли это использование? Каково официальное определение этого ограничивающего механизма?