See https://wg21.link/p849r8
Patch on review.
(In reply to Marek Polacek from comment #1) > Patch on review. In the proposed patch, I respectfully recommend a slight rewording of the new pedwarn messages in gcc/cp/semantics.c and gcc/cp/typeck2.c: either s/only available with/available only with/ or s/only available with/unavailable without/ or s/only available with/requires/ would emphasize the required flag rather than focus on the feature's availability. (FWIW, of the above suggestions, the last ["requires"] seems to me the most direct and simplest to understand.) Thank you.
I'm afraid "only available with" is the customary form we use throughout the front end, so in the patch I'm just sticking to that form.
Yeah. If we change the wording, we should change it consistently, and perhaps it would be useful to do that because the current wording suggests only a single pair of -std= options, while we mean that level and anything later (I don't think we have something supported std >= 11 && std <= 17 or similar ATM, just >= version or <= version).
PR 93769 covers pretty much the same topic.
The trunk branch has been updated by Marek Polacek <mpolacek@gcc.gnu.org>: https://gcc.gnu.org/g:93810fd673654db9ff16170624a6d36449eab241 commit r12-5386-g93810fd673654db9ff16170624a6d36449eab241 Author: Marek Polacek <polacek@redhat.com> Date: Wed Nov 3 11:04:22 2021 -0400 c++: Implement C++23 P0849R8 - auto(x) [PR103049] This patch implements P0849R8 which allows auto in a functional cast, the result of which is a prvalue. [expr.type.conv]/1 says that the type is determined by placeholder type deduction. We only accept 'auto', not 'decltype(auto)' -- that the type shall be auto comes from [dcl.type.auto.deduct]. Therefore the rules are like for [temp.deduct.call], deducing template arguments from a function call, so the result type will never be a reference, and we decay arrays/functions. PR c++/103049 gcc/cp/ChangeLog: * semantics.c (finish_compound_literal): Accept C++23 auto{x}. * typeck2.c (build_functional_cast_1): Accept C++23 auto(x). gcc/testsuite/ChangeLog: * g++.dg/cpp0x/auto25.C: Adjust dg-error. * g++.dg/cpp0x/auto9.C: Likewise. * g++.dg/cpp2a/concepts-pr84979-2.C: Likewise. * g++.dg/cpp2a/concepts-pr84979-3.C: Likewise. * g++.dg/cpp23/auto-fncast1.C: New test. * g++.dg/cpp23/auto-fncast2.C: New test. * g++.dg/cpp23/auto-fncast3.C: New test. * g++.dg/cpp23/auto-fncast4.C: New test. * g++.dg/cpp23/auto-fncast5.C: New test. * g++.dg/cpp23/auto-fncast6.C: New test.
Implemented in GCC 12.