【发布时间】:2014-06-12 08:35:29
【问题描述】:
我想定义一些模板特化的静态成员,像这样:
namespace A {
template <> int C<A1::A2::...::MyClass1>::member1_ = 5;
template <> int C<A1::A2::...::MyClass1>::member2_ = 5;
template <> int C<A1::A2::...::MyClass1>::member3_ = 5;
template <> int C<B1::B2::...::MyClass2>::member1_ = 6;
template <> int C<B1::B2::...::MyClass2>::member2_ = 6;
template <> int C<B1::B2::...::MyClass2>::member3_ = 6;
...
}
但为了简化代码(并使其看起来更有条理),我想做这样的事情:
namespace A {
{
using T = A1::A2::...::MyClass1;
template <> int C<T>::member1_ = 5;
template <> int C<T>::member2_ = 5;
template <> int C<T>::member3_ = 5;
}
{
using T = B1::B2::...::MyClass2;
template <> int C<T>::member1_ = 6;
template <> int C<T>::member2_ = 6;
template <> int C<T>::member3_ = 6;
}
...
}
编译器给出错误:expected unqualified-id。有没有办法将using 范围限制在“外部”空间中?
【问题讨论】:
-
你是用C++11模式编译的吗?
-
@TemplateRex 是的,我愿意。
-
我使用命名空间别名的新方法取消了我今天早些时候的答案。
标签: c++ templates c++11 namespaces template-specialization