Заморочка из серии "нельзя, но очень хочется". Прямо "в лоб" недьзя, но, возможно, удастся что-то придумать, чтоб получить нечто такое: в некотором пространстве имен есть шаблон класса. Есть также макрос внутри которого нужно выполнить специализацию этого шаблона (полную, если это важно). Причем макрос должен быть таким, чтоб его можно было пользовать в любых пространствах имен:
namespace ns1
{
template<typename T>
class Foo
{
...
};
template<typename T>
void bar(const Foo<T>& foo);
} // namespace ns1
#define DEFINE_FOO_SPECIALIZATION(T) \
...
namespace ns2
{
class Tag;
DEFINE_FOO_SPECIALIZATION(Tag)
...
bar(ns1::Foo<Tag>()); // call to the ns1::bar function passing an object of the specialized template class
} // namespace ns2