Title
In-class initialized members must be const
Status
tc1
Section
11.4 [class.mem]
Submitter
John Wiegley

Created on 1998-12-29.00:00:00 last changed 262 months ago

Messages

Date: 1999-04-15.00:00:00

Proposed Resolution (10/99): Change the sentence in 11.4 [class.mem] paragraph 4 to read:

A member-declarator can contain a constant-initializer only if it declares a static member (11.4.9 [class.static] ) of const integral or const enumeration type, see 11.4.9.3 [class.static.data] .
Date: 2022-11-20.07:54:16

The standard says, in 11.4 [class.mem] paragraph 4:

A member-declarator can contain a constant-initializer only if it declares a static member (11.4.9 [class.static] ) of integral or enumeration type, see 11.4.9.3 [class.static.data] .
But later, in the section on static class data member initialization, 11.4.9.3 [class.static.data] paragraph 4, it says:
If a static data member is of const integral or const enumeration type, its declaration in the class definition can specify a constant-initializer which shall be an integral constant expression (7.7 [expr.const] ). In that case, the member can appear in integral constant expressions within its scope.
The first paragraph should be modified to make it clear that it is not possible to initialize a static data member in-line with a constant-initializer if that data member is of integral (or enumeration) type, and yet not const.

Proposed Resolution (10/99): Change the sentence in 11.4 [class.mem] paragraph 4 to read:

A member-declarator can contain a constant-initializer only if it declares a static member (11.4.9 [class.static] ) of const integral or const enumeration type, see 11.4.9.3 [class.static.data] .
History
Date User Action Args
2003-04-25 00:00:00adminsetstatus: dr -> tc1
2000-02-23 00:00:00adminsetstatus: ready -> dr
1999-09-14 00:00:00adminsetmessages: + msg83
1998-12-29 00:00:00admincreate