Ответ 1
Да, A[8]
является агрегированным типом, хотя A
не является.
Понятие агрегата не является транзитивным, в отличие от некоторых других связанных понятий (например, "тривиально скопируемых" ).
Говоря кратко, совокупность влияет только на инициализацию типа и, следовательно, не обязательно должна быть транзитивной. Вы можете сказать A a[2] = { A('x', true), A(1, 2, 3) };
без необходимости устанавливать ограничения на характер A
. Напротив, такие понятия, как тривиальная копируемость, относятся к макету памяти классов и, следовательно, по самой своей природе должны быть транзитивными.