下面的代码编译罚款我的系统上的数组:迭代器大小不同
#include <array>
#include <type_traits>
static_assert(std::is_same<std::array<int, 5>::iterator,
std::array<int, 7>::iterator>::value, ":(");
是该行为由标准保证的?迭代器类型是否与数组大小无关?
如果有保证,有没有什么办法可以从元素类型中抽象出来并忽略大小?
template<typename T, size_t n>
void foobar(std::array<T, n>::iterator it)
即,是否有任何方式来写上述特定于阵列的代码而不提大小n
?
请注意,即使在发布模式下迭代器可能是T*
,我也不想求助于T*
。
“template void foobar(Itearator_type it)''有什么问题? –
Lol4t0
@ Lol4t0它太笼统了,不能满足我对知识的渴望? – fredoverflow
我的意思是,如果代码适用于_given_迭代器,为什么要施加人为限制?这2条评论仅与您问题的最后一部分相关。 – Lol4t0