我正在尝试执行以下操作:
struct A {
typedef int C;
};
template<typename T> struct B {
T a;
};
template<typename T> struct C : B<T::C> {
T c;
};
int main() {
A::C y;
C<A> x;
}
(在我的特定情况下,A
将C
定义为用于颜色信息的某种数据类型,C
是缓冲区,B
是分配器。但是编译器抱怨道:
error C2923: "B": "T::C" is not a valid template-Typeargument for the T parameter.
位于template<typename T> struct C : B<T::C>
的行。
我怎样才能做到这一点?
注意
struct A {
typedef int C;
};
template<typename T> struct B {
T a;
};
template<typename T, typename Q> struct C : B<Q> {
T c;
};
int main() {
A::C y;
C<A, A::C> x;
}
不是一个选项 - 我需要绝对确定Q
是T::C
我不能强制执行(我可以吗?)。