From: Jonathan Wakely Date: Thu, 6 Mar 2025 20:23:29 +0000 (+0000) Subject: libstdc++: Add poison pill for chrono::from_stream X-Git-Tag: basepoints/gcc-16~1657 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b180459626df64dac758da8760d868c2604ddf2;p=thirdparty%2Fgcc.git libstdc++: Add poison pill for chrono::from_stream LWG 3956 (approved in Hagenberg, February 2025) decided that from_stream should be found *only* by ADL, not ordinary unqualified lookup. Add a poison pill overload to chrono::__detail where the __parsable concept and operator>>(basic_istream&, _Parser) are defined. This ensures that when they use from_stream unqualified ordinary lookup finds the poison pill, which is deleted, so a usable overload resolution result can only be found by ADL. We already have the std/time/parse/parse.cc test checking that ADL works, so this doesn't add a new test. libstdc++-v3/ChangeLog: * include/bits/chrono_io.h (chrono::__detail::from_stream): Add deleted function as poison pill for unqualified lookup. Reviewed-by: Patrick Palka --- diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h index 8c026586d4c..c16b555df29 100644 --- a/libstdc++-v3/include/bits/chrono_io.h +++ b/libstdc++-v3/include/bits/chrono_io.h @@ -3115,6 +3115,10 @@ namespace __detail namespace __detail { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3956. chrono::parse uses from_stream as a customization point + void from_stream() = delete; + template, typename... _OptArgs>