У меня возникают проблемы с пониманием того, почему и gcc-8.2.0, и clang-7.0.0 отклоняют следующий код (живой код здесь):
#include <array>
int main() {
constexpr std::array<int,3> v{1,2,3};
constexpr auto b = v.begin(); // error: not a constexpr
return 0;
}
с ошибкой
error: '(std::array<int, 3>::const_pointer)(& v.std::array<int,3>::_M_elems)'
is not a constant expression (constexpr auto b = v.begin();)
Согласно en.cppreference.com, функция begin()
объявляется constexpr
. Это ошибка компилятора?