相关疑难解决方法(0)

什么是非弱化背景?

我最近接触过这个问题,答案可以概括为"这是一个非受限的背景".

具体来说,第一个说它是这样的东西,然后重定向到"细节"的标准,而第二个引用标准,这至少可以说是神秘的.

有人可以向凡人解释,比如我自己,什么是非受限的背景,什么时候发生,为什么会发生?

c++ templates template-argument-deduction argument-deduction

57
推荐指数
1
解决办法
4611
查看次数

容器迭代器的部分专业化失败

我想为不同的容器迭代器实现部分专业化。如果我对容器这样的话,代码可以很好地编译,但是对于它们的迭代器来说却失败了:

好

template<typename T>
struct IsContainer : std::false_type {};
template<typename T>
struct IsContainer<std::list<T>> : std::true_type {};
template<typename T>
struct IsContainer<std::set<T>> : std::true_type {};
template<typename T1, typename T2>
struct IsContainer<std::map<T1, T2>> : std::true_type {};
Run Code Online (Sandbox Code Playgroud)

产生错误:

类模板的部分专业化包含无法推导的模板参数;这种部分专业化将永远不会使用

对于每个专业:

template<typename T>
struct IsIterator : std::false_type {};
template<typename T>
struct IsIterator<std::list<T>::iterator> : std::true_type {};
template<typename T>
struct IsIterator<std::set<T>::iterator> : std::true_type {};
template<typename T1, typename T2>
struct IsIterator<std::map<T1, T2>::iterator> : std::true_type {};
Run Code Online (Sandbox Code Playgroud)

迭代器的正确形式是什么?

c++

5
推荐指数
1
解决办法
99
查看次数