SG16 will hold a meeting today, Wednesday, March 26th, at 19:30 UTC (timezone conversion).
Once again, my apologies for sending the agenda so late.
If you need a .ics file to import into your calendar, you can
download it here.
The agenda follows.
The features proposed in P3491R2 were previously
discussed in SG16 in the context of P2996R5 (Reflection for C++26)
during the 2024-08-14
meeting. As P2996 progressed, these features were split to
the new paper. The guidance we provided in that meeting was to
remove define_static_string() in
favor of adding define_static_array()
as a means to avoid questions about null terminators for strings.
The new paper proposes both define_static_string()
and define_static_array() (as well
as define_static_object()), but
addresses the null termination question by statically determining
if the range passed to define_static_string()
corresponds to a string literal; if it does, then the null
terminator presumed to be present in the range is ignored. A
possible implementation of define_static_string()
is described in section 3.3, "Possible Implementation". The
ability to check if a pointer points to a (portion of a) string
literal during constant evaluation is also exposed via a suite of
is_string_literal() overloads. We'll
discuss this new design and, if all goes well, poll forwarding the
paper. Note that LEWG has already forwarded this paper for C++26
and any concerns we identify that would require design changes
will presumably have to be addressed as LWG issues.
P3391R0 seeks to make std::format()
available during constant evaluation with appropriate limitations.
The proposal omits support for std::chrono
types which saves us the effort of having to decide how to handle
the locale dependent conversion specifiers from [time.format].
The proposal does not add constexpr
to the std::format() overloads that
have a std::locale parameter, but
it is currently silent regarding handling of the L option for the standard format
specifiers in [format.string.std].
We'll discuss and provide guidance regarding handling of that
option. Possibilities include excluding calls that specify this
option during constant evaluation or specifying the behavior as-if
for the "C" locale. Note that none of std::locale::classic(),
std::locale::global(), the std::locale constructors, or the std::locale facets are currently
declared constexpr.
Tom.