LINUX.ORG.RU

История изменений

Исправление eao197, (текущая версия) :

А еще лучше было бы в этой задаче вообще обойтись без шаблонов:

namespace A {

void f() { cout << "A::f()" << endl; }

}

namespace B {

void g() { cout << "B::g()" << endl; }

}

namespace C {

struct f_tag {};
struct g_tag {};

void h(f_tag) { A::f(); }
void h(g_tag) { B::g(); }

}

int main()
{
	h( C::f_tag() );
	h( C::g_tag() );
}

Исходная версия eao197, :

А еще лучше было бы в этой задаче вообще обойтись без шаблонов:

namespace A {

void f() { cout << "A::f()" << endl; }

}

namespace B {

void g() { cout << "B::g()" << endl; }

}

namespace C {

struct f_tag {};
struct g_tag {};

void h(f_tag) { A::f(); }
void h(g_tag) { B::g; }

}

int main()
{
	h( C::f_tag() );
	h( C::g_tag() );
}