编辑:我在 Windows 上使用 tdm-gcc-4.7.1-2
不知道如何解决这个问题。我想将其用作一种类型列表,让我知道我正在尝试使用B
's typedefs 中不存在的类型。
template <typename T, typename U>
struct A {
typedef pair<T, U> type;
};
struct B : A<int, string>, A<int, float> {};
B::type foo; // won't compile, ambiguous reference, as expected
B::A<int, int>::type bar; // compiles fine?? :(
有没有办法让它失败A<int, int>
(以及任何其他A
不被继承的B
),或者另一种方法来解决这个问题?我想我可以使用 atuple
并通过它递归,is_same
对每个元素与我提供的元函数进行比较,但这似乎更容易......起初:\