https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108053
Bug ID: 108053
Summary: std::visit_format_arg should hide __int128 and other
extensions behind a handle
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: redi at gcc dot gnu.org
Target Milestone: ---
As an extension we store some additional types directly in the basic_format_arg
type, rather than indirection through a handle type. But this is observable to
users because std::visit_format_arg is called with the stored type.
We should have an internal __visit_format_arg which visits the real stored
type, and then a user-facing std::visit_format_arg which only visits the types
that the standard says should be there. The other types should be wrapped in a
temporary handle when passed to the visitor.