Я играл с последней спецификацией для std::span
, используя ствол лязга и libc++ на Godbolt, и нахожу некоторых конструкторов непонятными.
В частности, я считаю, что конструкторы из простого старого массива и std::array
отличаются от других контейнеров.
Например, следующий код появляется для компиляции:
std::vector<int*> v = {nullptr, nullptr};
std::span<const int* const> s{v};
Однако это не так:
std::array<int*, 2> a = {nullptr, nullptr};
std::span<const int* const> s{a};
Похоже, это соответствует описанию конструкторов на cppreference.com, я просто пытаюсь понять, почему это так. Кто-нибудь может пролить свет?