Todos los constructores de std :: span se declaran constexpr, sin embargo, parece que no puedo hacer que ninguno de ellos funcione en un contexto constexpr. Descomentar cualquiera de los constexpr a continuación dará como resultado un error de compilación.
#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};
}
De hecho, ¿es posible crear un tipo de intervalo constexpr, ya que parece que los constructores nunca pueden evaluarse en tiempo de compilación cuando tienen que inicializar un puntero o referencia?
Descomente los constexprs no los elimine.
—
Andreas Loanjoe el
Está iniciando un período de tiempo de ejecución que quise inicializar un período de tiempo de constexpr
—
Andreas Loanjoe
Doh No estoy seguro de por qué hice eso. no importa
—
NathanOliver
raro, no veo por qué eso sería necesario el lapso sólo se vive dentro del ámbito local de todos modos ...
—
Andreas Loanjoe
Muy relacionado: stackoverflow.com/q/57545503/2069064
—
Barry el