aşağıda eserleri:Bir std :: adlandırılmamış yapı dizisini başlatmak mümkün mü?
struct
{
int v;
} vals[] = { {1}, {2} };
ben aynı şeyi yapmak ama bunun yerine bir std::array
başlatmak miyim? Bu kadar çok insan soruyor beri
Düzenleme 'Neden'
Orada bazı çok bariz geçici çözümler (yorumlarda listelenmiştir) vardır, ama sadece bir kez türü kullanmak istiyoruz, bu yüzden gerçekten istemiyorum istiyorum mevcut ad alanma eklendi. Bir tuple veya benzer bir şey kullanabilirdim, ancak adlandırılmış değerlere sahip olmak netliği artırıyor. Bir std::array
yapıyorum, c-array değerine ihtiyacım yok, bu yüzden decltype kullanamıyorum. Ben yapmak istiyorum
en temiz çözüm: hem akademik ilgi bir unsur bulunmamaktadır
struct
{
int v;
} std::array vals = { {1}, {2} };
- "değil gerçi ben bir şekilde bu mümkün mü?". değil gibi görünüyor, bu yüzden muhtemelen kullanacağız:
struct
{
int v;
} c_array[] = {};
std::array<std::remove_reference_t<decltype(c_array[0])>, 2> arr = { {1}, {2} };
Eğer 'dizisi' denediniz mi? –
@MatsPetersson Bu işe yaramaz. –
'struct {int v; foo; std :: array çubuk = {{{1}, {2}}}; '? Ama neden bunu yapmak zorundasınız? –