aboutsummaryrefslogtreecommitdiff
path: root/libjava/classpath/lib/javax/management
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2025-04-16 11:44:46 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2025-04-17 10:11:49 +0100
commit0be3dff1aadcc3e879f3d1ffd45d842ab0e0c0bf (patch)
tree1facd4082095571d34617162467309ab24248a18 /libjava/classpath/lib/javax/management
parent22fe83d6fc9f59311241c981bcad58b61e2056d4 (diff)
downloadgcc-0be3dff1aadcc3e879f3d1ffd45d842ab0e0c0bf.zip
gcc-0be3dff1aadcc3e879f3d1ffd45d842ab0e0c0bf.tar.gz
gcc-0be3dff1aadcc3e879f3d1ffd45d842ab0e0c0bf.tar.bz2
libstdc++: Do not use 'not' alternative token in <format>
This fixes: FAIL: 17_intro/headers/c++1998/operator_names.cc -std=gnu++23 (test for excess errors) FAIL: 17_intro/headers/c++1998/operator_names.cc -std=gnu++26 (test for excess errors) The purpose of 'not defined<format_kind<R>>' is to be ill-formed (as required by [format.range.fmtkind]) and to give an error that includes the string "not defined<format_kind<R>>". That was intended to tell you that format_kind<R> is not defined, just like it says! But user code can use -fno-operator-names so we can't use 'not' here, and "! defined" in the diagnostic doesn't seem as user-friendly. It also raises questions about whether it was intended to be the preprocessor token 'defined' (it's not) or where 'defined' is defined (it's not). Replace it with __primary_template_not_defined<format_kind<R>> and a comment, which seems to give a fairly clear diagnostic with both GCC and Clang. The diagnostic now looks like: .../include/c++/15.0.1/format:5165:7: error: use of 'std::format_kind<int>' before deduction of 'auto' 5165 | format_kind<_Rg> // you can specialize this for non-const input ranges | ^~~~~~~~~~~~~~~~ .../include/c++/15.0.1/format:5164:35: error: '__primary_template_not_defined' was not declared in this scope 5164 | __primary_template_not_defined( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 5165 | format_kind<_Rg> // you can specialize this for non-const input ranges | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5166 | ); | ~ libstdc++-v3/ChangeLog: * include/std/format (format_kind): Do not use 'not' alternative token to make the primary template ill-formed. Use the undeclared identifier __primary_template_not_defined and a comment that will appear in diagnostics. * testsuite/std/format/ranges/format_kind_neg.cc: New test.
Diffstat (limited to 'libjava/classpath/lib/javax/management')
0 files changed, 0 insertions, 0 deletions