`input_iterator :: operator *`的返回类型?

时间:2016-11-29 20:18:54

标签: c++ iterator dereference

我正在为QSqlQuery做一个输入迭代器包装器(用于遍历行并为每一行构造一个新的类类型对象),我想知道返回的{{1}类型必须是什么}。

根据input iterator concept description中的operator*,返回的cppreference类型必须为:

  

引用,可转换为value_type

奇怪的是,我怀疑该逗号*i是代表,还是or(“引用value_type或/和可转换为value_type”),因为在我的情况下,我在调用and时构造了一个新对象(其类型是类模板参数)。因此,我无法返回参考文献。

要匹配输入迭代器“concept”,我可以按值返回对象吗?

1 个答案:

答案 0 :(得分:2)

iterator_traits<>必须定义5种类型,其中一种是reference,因此是逗号。你可以按价值返回;对const_iterator这样做是公平的,因为:对于非const,你不能修改原文。我想这是可以的,因为你有一个SQL查询。在这种情况下,您可以在typedef value_type reference;内进行iterator_traits<T>