Alle Konstruktoren von std :: span sind als constexpr deklariert, aber ich kann anscheinend keinen von ihnen dazu bringen, in einem constexpr-Kontext zu arbeiten. Das Kommentieren eines der folgenden Constexpr führt zu einem Kompilierungsfehler.
#include <array>
#include <span>
int main()
{
constexpr int carray[3] = { 0, 1, 2 };
constexpr std::array<int, 3> array{ 0, 1, 2 };
using S = std::span<const int, 3>;
/*constexpr*/ S span1{ array.data(), 3 };
/*constexpr*/ S span2{array.begin(), array.end()};
/*constexpr*/ S span3{carray};
/*constexpr*/ S span4{array};
}
Ist es tatsächlich möglich, einen constexpr span-Typ zu erstellen, da Konstruktoren anscheinend niemals zur Kompilierungszeit ausgewertet werden können, wenn sie einen Zeiger oder eine Referenz initialisieren müssen?