Aşağıdaki kodu göz önünde bulundurun:
struct A
{
// No data members
//...
};
template<typename T, size_t N>
struct B : A
{
T data[N];
}
B: B<int, 3> b = { {}, {1, 2, 3} };
Bu şekilde başlatmak gerekir: Temel sınıf için gereksiz boş {} önlemek istiyorum. Burada Jarod42 tarafından önerilen bir çözüm var , ancak öğeler varsayılan başlatma ile çalışmıyor: B<int, 3> b = {1, 2, 3};
gayet iyi ama B<int, 3> b = {1};
değil: b.data[1]
ve b.data[2]
varsayılan olarak 0 olarak başlatılmıyor ve bir derleyici hatası oluşuyor. Temel sınıfı inşaattan "gizlemek" için herhangi bir yol var mı (ya da c ++ 20 ile olacak)?
template<class... Ts> B(Ts... args) : data{args...} {}
?