Господа, подскажите, пункты стандарта которые описывают правила поиска перегрузок в следующей ситуации:
// someone.h
namespace Foo {
void func(int b);
class Test{
static void test();
}
}
// anotherone.h
namespace Bar {
void func(int b, int a);
}
// someone.cpp
#include "someone.h"
#include "anotherone.h"
using namespace Bar;
using namespace Foo;
namespace Foo {
using Bar::func; // Решение
}
void Test::test()
{
int a, b;
func(a, b); // эта функа не находится компилятором...
Bar::func(a,b);// Так находится
func(a); // И эта находится
}
Upd: поправил код - не находится функа внутри статического метода класса, как минимум в gcc тоже воспроизводится.
Upd: вспомогательный вопрос:) считается ли перегрузкой функа из неймспейса для функи из другого неймспейса, при условии что оба неймспейса включенны в одну область видимости.
Upd: коллеги помогли найти решение, см сэмпл.
Upd: Печально, что никто так и не дал ссылку на стандарт :)
Upd: спасибо Harald, частично к решению проблеммы можно было прийти прочитав 7.3.3(The using declaration) и 7.3.4(Using directive).