Semua konstruktor std :: span dideklarasikan dengan constexpr, namun sepertinya saya tidak bisa membuat mereka bekerja dalam konteks constexpr. Membatalkan komentar salah satu dari constexpr di bawah ini akan menghasilkan kesalahan kompilasi.
#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};
}
Apakah mungkin untuk membuat tipe span constexpr, karena sepertinya konstruktor tidak pernah dapat dievaluasi pada waktu kompilasi ketika mereka harus menginisialisasi pointer atau referensi?
Batalkan komentar pada constexprs jangan hapus mereka.
—
Andreas Loanjoe
Anda menginisialisasi rentang runtime yang saya maksud untuk menginisialisasi rentang constexpr
—
Andreas Loanjoe
Doh. Tidak yakin mengapa saya melakukan itu. nevermind
—
NathanOliver
aneh, tidak mengerti mengapa itu perlu rentang hanya tinggal di dalam lingkup lokal saja ...
—
Andreas Loanjoe
Terkait erat: stackoverflow.com/q/57545503/2069064
—
Barry