Created on 2016-03-05.00:00:00 last changed 17 months ago
Proposed resolution (approved by CWG 2022-11-11):
Insert after 6.3 [basic.def.odr] bullet 14.7 as follows:
[Accepted as a DR at the November, 2022 meeting.]
Consider the following example:
// tu1.cpp extern const int a = 1; inline auto f() { static const int b = a; struct A { auto operator()() { return &b; } } a; return a; } // tu2.cpp extern const int a; inline auto f() { static const int b = a; struct A { auto operator()() { return &b; } } a; return a; } int main() { return *decltype(f())()(); }
Here, b may or may not have constant initialization. This example should be an ODR violation.
(Split off from issue 2123.)
History | |||
---|---|---|---|
Date | User | Action | Args |
2023-07-16 13:00:43 | admin | set | status: open -> c++23 |
2023-07-16 13:00:43 | admin | set | status: drwp -> open |
2023-02-18 18:43:04 | admin | set | status: dr -> drwp |
2022-11-25 05:14:04 | admin | set | status: nb -> dr |
2022-11-12 03:34:57 | admin | set | messages: + msg7002 |
2022-11-12 03:34:57 | admin | set | status: drafting -> nb |
2016-03-05 00:00:00 | admin | create |