gpt4 book ai didi

c++ - 指定容器类型的迭代器类型的部分特化

转载 作者:太空狗 更新时间:2023-10-29 21:46:00 26 4
gpt4 key购买 nike

我有一个模板结构,它接受 Iterator 类型作为模板参数。现在我需要为不同容器的迭代器专门化该类。我试过 std::vector

template<typename Iterator>
struct AC {

};

template<typename T, typename Alloc>
struct AC<typename std::vector<T, Alloc>::iterator> { //this doesn't work

};

但是我得到了这个编译器错误(VS11):'T' : 在部分特化中未使用或可推导的模板参数

有人可以告诉我为什么这不起作用吗?以及如何让它发挥作用?

最佳答案

您无法推断出嵌套左侧的类型 :: .确实,你的问题没有意义。考虑这个更简单的反例:

template <typename> struct Foo;
template <> struct Foo<bool> { typedef float type; };
template <> struct Foo<char> { typedef float type; };

template <typename> struct DoesntWork;

template <typename T> struct DoesntWork<typename Foo<T>::type> { };

现在如果我说 DoesntWork<float> ,应该做什么T是吗?

关键是没有理由 any T应该存在 Foo<T>::type是您想要匹配的东西,即使有,也没有理由说它是唯一的。

关于c++ - 指定容器类型的迭代器类型的部分特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16123279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com