次のコードは、私のシステムでは問題なくコンパイルされます。
#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*
.