Выполнение специализации в произвольном пространстве имен
От: rg45 СССР  
Дата: 29.09.14 22:44
Оценка:
Заморочка из серии "нельзя, но очень хочется". Прямо "в лоб" недьзя, но, возможно, удастся что-то придумать, чтоб получить нечто такое: в некотором пространстве имен есть шаблон класса. Есть также макрос внутри которого нужно выполнить специализацию этого шаблона (полную, если это важно). Причем макрос должен быть таким, чтоб его можно было пользовать в любых пространствах имен:

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
--
Не можешь достичь желаемого — пожелай достигнутого.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.