fre*_*low 5 c++ arrays templates iterator c++11
以下代码在我的系统上编译正常:
#include <array>
#include <type_traits>
static_assert(std::is_same<std::array<int, 5>::iterator,
std::array<int, 7>::iterator>::value, ":(");
Run Code Online (Sandbox Code Playgroud)
标准是否保证了这种行为?迭代器类型是否与数组大小无关?
如果有保证,有没有办法从元素类型中抽象并忽略大小?
template<typename T, size_t n>
void foobar(std::array<T, n>::iterator it)
Run Code Online (Sandbox Code Playgroud)
也就是说,有没有办法在不提及大小的情况下编写上面特定于数组的代码n?
请注意,我不想诉诸T*,即使在发布模式下迭代器可能是一个T*.
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |