I was wondering about the last constructor for std::string
mentioned here. It says:
template<class InputIterator> string (InputIterator begin, InputIterator end);
If InputIterator
is an integral type, behaves as the sixth constructor version (the one right above this) by typecasting begin and end to call it:
string(static_cast<size_t>(begin),static_cast<char>(end));
In any other case, the parameters are taken as iterators, and the content is initialized with the values of the elements that go from the element referred by iterator begin to the element right before the one referred by iterator end.
So what does that mean if InputIterator
is a char *
?
EDIT: Ok, my bad. I just realized that it says integral type, not primitive type in the documentation, so the question does not apply to that example. But still, are pointers primitives?
C++ doesn't have a concept of "primitive" types; integers are fundamental types and pointers are compound types.
In this case, char*
can't be converted into either size_t
or char
, so it will be taken as the InputIterator
template parameter.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With