#include

namespace A {

struct s_t{};

void func (s_t )

{ std::cout << "A::func!n"; }

}

namespace B {

struct s_t{};

template

void func (T )

{ std::cout << "B::func!n"; }

}

template

void func (T & )

{ std::cout << "GLOB::func!n"; }

int main ()

{

using namespace A;

func (s_t());

func (B::s_t {});

return 0;

}