Hello everyone!I hope that these are reasonable questions and not a waste of time.First, I have been reading the requirements for forward iterators in 23.3.5.5 and am focused on Paragraph 2 [1].Given,- The vector v in std::vector<int> v{}; is an empty sequence, and- The vector iterator v_it in std::vector<v>::iterator v_it{}; is a value-initialized iterator that meets the requirements of forward iterator,is it specified (per Note 1 of Paragraph 2) thatv.end() == v_it?
To say it a different way, does that paragraph and its note specify what this should print?#include <iostream>
#include <vector>
int main() {
std::vector<int> int_vector{};
std::vector<int>::iterator int_vector_it{};
if (int_vector_it == int_vector.end())
std::cout << "int_vector_it == int_vector.end()\n";
else
std::cout << "int_vector_it != int_vector.end()\n";
return 1;
}
Second, forward iterators are required to be default constructible. I can find no requirement in the standard for the semantics of a default-initialized forward iterator's value. Is it specified as implementation defined? The only clue comes from [2] which could be read to imply that a default-initialized iterator should follow the specification's semantics for default-initialized pointers.These issues have been driving me mad for several days. Again, I hope that they are reasonable questions and that I am not wasting your time.Thanks in advance for any responses!Will