STL 的形式有很多功能:
result_type algorithm(ForwardIterator beg, ForwardIterator end);
或
result_type algorithm(BidirectionalIterator beg, BidirectionalIterator end);
是否有可移植且方便的方法来确定end
迭代器是否可以通过前者的简单递增从beg
到达(在双向迭代器的情况下反之亦然)?在上述算法的第一行中,应该如何看似对应的assert(?);
?
目的是在UB发生之前尽早发现std::list< int > l(10); std::iota(std::end(l), std::begin(l), 0);
之类的错误。
是否有任何建议或Range-V3库中有什么东西可以解决这个问题?