Std :: span'ın tüm kurucuları constexpr olarak ilan edilir, ancak hiçbirinin bir bağlam bağlamında çalışmasını sağlayamıyorum. Aşağıdaki bağlamlardan herhangi birinin kaldırılması derleme hatasına neden olacaktır.
#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};
}
Aslında, bir işaretçi veya başvuru başlatmaları gerektiğinde derleyiciler derleme zamanında değerlendirilemez gibi görünüyor, çünkü bir constexpr span türü oluşturmak mümkün mü?
Rahatsızlık onları kaldırmaz.
—
Andreas Loanjoe
Bir bağlam süresini başlatmak istediğim bir çalışma süresi aralığını başlatıyorsunuz
—
Andreas Loanjoe
Hamuru. Bunu neden yaptığımdan emin değilim. nevermind
—
NathanOliver
garip, neden gerekli olacağını anlamıyorum, açıklık sadece yerel kapsamda yaşıyor ...
—
Andreas Loanjoe
Yakından ilgili: stackoverflow.com/q/57545503/2069064
—
Barry