我正在尝试编写一个实现 const 和非 const 迭代器的类,如此处所示。
编译以下代码(简化)时会出现问题:
class SimpleIt {
using my_vector_ref_type = named_vector<T>&;
public:
SimpleIt(my_vector_ref_type r) {}
};
//То же самое, но с std::conditional
template <bool is_const>
class CondIt {
using my_vector_ref_type = std::conditional<
is_const,
const named_vector<T>&,
named_vector<T>&
>;
public:
CondIt(my_vector_ref_type r) {}
};
iterator begin() {
SimpleIt si(*this); //Компилирует
CondIt<false> c(*this); //error: no matching constructor for initialization of 'CondIt<false>'