这是它的证据:
inline
constexpr std::size_t prev(std::size_t i) {
--i;
return i;
}
int main() {
static const std::size_t i = 0;
static_assert(prev(i) == std::size_t(-1), "Decrementing should give std::size_t(-1)");
return 0;
}
使用-std=c++14
编译可以顺利通过。
我遇到这个问题是因为我需要对std::vector
进行反向循环,所以我将循环索引更改为:
for (std::size_t i = std::min(idx, v.size() - 1); i != std::size_t(-1); --i) { ... }
现在,我意识到我可以使用 std::vector::reverse_iterator
,但我的真正问题是,我期望的行为是否有明确定义?