CWG Issue 2610 (original) (raw)

This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 117a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2025-04-13


2610. Indirect private base classes in aggregates

Section: 9.5.2 [dcl.init.aggr]Status: C++23Submitter: Chris BowlerDate: 2022-07-21

[Accepted as a DR at the November, 2022 meeting.]

The wording appears to prohibit aggregates from having indirect private base classes. That does not match existing practice and is an unnecessary restriction. For example:

#include

struct B1 {}; struct B2 : private B1 {}; struct S : public B2 {};

void f() { static_assert(std::is_aggregate::value); }

Proposed resolution (approved by CWG 2022-08-26):

Change in 9.5.2 [dcl.init.aggr] paragraph 1 as follows:

An aggregate is an array or a class (Clause 11 [class]) with