我想知道是否有办法“重置”命名空间。我主要问这个是因为我想使用定义在另一个命名空间中专门化一些模板结构。
这是我可能想要实现的简化示例:
namespace base {
template<typename>
struct my_traits;
}
// specialize base::my_traits for TYPE
// obviously, this does not work
#define MAKE_SPECIALIZED_TRAITS(TYPE) \
namespace ::base { \
template<> \
struct my_traits<TYPE> { \
typedef TYPE type; \
enum { size = TYPE::size }; \
}; \
}
namespace spec {
struct my_struct {
enum { size = 3 };
};
MAKE_SPECIALIZED_TRAITS(my_struct)
}
这样的事情可能吗?如果是这样,我将如何实施?