下面的代碼編譯罰款我的系統上的數組:迭代器大小不同
#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