array.zero-2 говорит:Что такое begin() == end()?
В случае,
N == 0
,begin() == end()
== уникальное значение. Возвращаемое значениеdata()
не указано.
Что означает это уникальное значение? Означает ли это, что результат выражения begin() == end()
является уникальным значением? Я не понимаю, как это имеет смысл, так как bool может быть истинным или ложным, что не очень уникально. Я побежал следующие тесты:
#include <array>
#include <iostream>
#include <iomanip>
#include <type_traits>
int main()
{
std::array<int, 0> test;
auto b = test.begin();
auto e = test.end();
std::cout << std::boolalpha
<< (test.begin() == test.end())
<< std::is_same<bool, decltype(test.begin() == test.end())>::value
<< std::is_same<bool, decltype(b == e)>::value;
}
It все выходы true
, как ожидалось. Затем я подумал, может быть, это будет отличаться для массива с нулевым размером:
int main()
{
std::array<int, 0> test;
std::array<int, 1> test2;
std::cout << std::boolalpha
<< std::is_same<
decltype(test.begin() == test.end()),
decltype(test2.begin() == test2.end())
>::value
<< std::is_same<
decltype(test.begin()),
decltype(test2.begin())
>::value;
}
Снова все верно. Итак, что означает «уникальная ценность»? Что имеет уникальное значение?