Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
e6a9da6
CWG2054 Missing description of class SFINAE
burblebee Nov 13, 2023
2290a03
CWG2102 Constructor checking in new-expression
burblebee Nov 13, 2023
1cbe98e
CWG2252 Enumeration list-initialization from the same type
burblebee Nov 13, 2023
ead2f0a
CWG2504 Inheriting constructors from virtual base classes
burblebee Nov 13, 2023
17ad6db
CWG2531 Static data members redeclared as constexpr
burblebee Nov 13, 2023
c1e3e24
CWG2556 Unusable promise::return_void
burblebee Nov 13, 2023
f5dde4d
CWG2570 Clarify constexpr for defaulted functions
burblebee Nov 13, 2023
e3076f8
CWG2591 Implicit change of active union member for anonymous union in…
burblebee Nov 13, 2023
58a96f1
CWG2595 "More constrained" for eligible special member functions
burblebee Nov 13, 2023
c8cca13
CWG2600 Type dependency of placeholder types
burblebee Nov 13, 2023
bd18226
CWG2628 Implicit deduction guides should propagate constraints
burblebee Nov 13, 2023
f303385
CWG2672 Lambda body SFINAE is still required, contrary to intent and …
burblebee Nov 13, 2023
f3bed0c
CWG2725 Overload resolution for non-call of class member access
burblebee Nov 13, 2023
92b99b6
CWG2733 Applying [[maybe_unused]] to a label
burblebee Nov 13, 2023
c5b42c9
CWG2747 Cannot depend on an already-deleted splice
burblebee Nov 13, 2023
7b2b2e1
CWG2749 Treatment of "pointer to void" for relational comparisons
burblebee Nov 13, 2023
eed7b9c
CWG2753 Storage reuse for string literal objects and backing arrays
burblebee Nov 13, 2023
6cb09a1
[intro.object] Use bullets to help clarify wording added in CWG2753.
burblebee Nov 13, 2023
07113e5
CWG2754 Using *this in explicit object member functions that are coro…
burblebee Nov 13, 2023
667129b
CWG2755 Incorrect wording applied by P2738R1
burblebee Nov 13, 2023
73bb723
CWG2758 What is "access and ambiguity control"?
burblebee Nov 13, 2023
218cee1
CWG2759 [[no_unique_address] and common initial sequence
burblebee Nov 13, 2023
25dd302
CWG2760 Defaulted constructor that is an immediate function
burblebee Nov 13, 2023
f41b535
CWG2761 Implicitly invoking the deleted destructor of an anonymous un…
burblebee Nov 13, 2023
65dd47b
CWG2762 Type of implicit object parameter
burblebee Nov 13, 2023
1227001
CWG2763 Ignorability of [[noreturn]] during constant evaluation
burblebee Nov 13, 2023
36a989c
CWG2764 Use of placeholders affecting name mangling
burblebee Nov 13, 2023
9539ea7
CWG2768 Assignment to enumeration variable with a braced-init-list
burblebee Nov 14, 2023
155e163
CWG2772 Missing Annex C entry for linkage effects of linkage-specific…
burblebee Nov 14, 2023
8ded370
CWG2780 reinterpret_cast to reference to function types
burblebee Nov 14, 2023
8f3ada9
CWG2783 Handling of deduction guides in global-module-fragment
burblebee Nov 14, 2023
05ac6f7
CWG2785 Type-dependence of requires-expression
burblebee Nov 14, 2023
520aa07
CWG2789 Overload resolution with implicit and explicit object member …
burblebee Nov 14, 2023
17cef3a
CWG2791 Unclear phrasing about "returning to the caller"
burblebee Nov 14, 2023
084900d
CWG2792 Clean up specification of noexcept operator
burblebee Nov 14, 2023
31ff201
[expr.unary.noexcept] Fix reference to "unevaluated operand" added in…
burblebee Nov 17, 2023
6fc65d5
CWG2793 Block-scope declaration conflicting with parameter name
burblebee Nov 14, 2023
15f7b23
CWG2795 Overlapping empty subobjects with different cv-qualification
burblebee Nov 14, 2023
4cba24d
CWG2796 Function pointer conversions for relational operators
burblebee Nov 14, 2023
55016c2
CWG2798 Manifestly constant evaluation of the static_assert message
burblebee Nov 14, 2023
7cb9798
CWG2801 Reference binding with reference-related types
burblebee Nov 14, 2023
81f6035
CWG2806 Make a type-requirement a type-only context
burblebee Nov 14, 2023
544c15f
CWG2807 Destructors declared consteval
burblebee Nov 14, 2023
4fb5ad3
CWG2823 Implicit undefined behavior when dereferencing pointers
burblebee Nov 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
CWG2672 Lambda body SFINAE is still required, contrary to intent and …
…note
  • Loading branch information
burblebee authored and tkoeppe committed Dec 17, 2023
commit f303385d0dacfca64947a41e61122eedec11ae6a
6 changes: 4 additions & 2 deletions source/expressions.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2871,8 +2871,10 @@

\pnum
The substitution of template arguments into a \grammarterm{requires-expression}
may result in the formation of invalid types or expressions in its
\grammarterm{requirement}s or the violation of the semantic constraints of those \grammarterm{requirement}s.
can result in
the formation of invalid types or expressions in the immediate context of
its \grammarterm{requirement}s\iref{temp.deduct.general} or
the violation of the semantic constraints of those \grammarterm{requirement}s.
In such cases, the \grammarterm{requires-expression} evaluates to \keyword{false};
it does not cause the program to be ill-formed.
The substitution and semantic constraint checking
Expand Down
8 changes: 4 additions & 4 deletions source/templates.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1671,7 +1671,8 @@
\defnx{satisfied}{constraint!satisfaction!atomic},
the parameter mapping and template arguments are
first substituted into its expression.
If substitution results in an invalid type or expression,
If substitution results in an invalid type or expression
in the immediate context of the atomic constraint\iref{temp.deduct.general},
the constraint is not satisfied.
Otherwise, the lvalue-to-rvalue conversion\iref{conv.lval}
is performed if necessary,
Expand Down Expand Up @@ -7266,9 +7267,8 @@
\end{note}

\pnum
A \grammarterm{lambda-expression} appearing in a function type
or a template parameter is not considered part of the immediate context
for the purposes of template argument deduction.
When substituting into a \grammarterm{lambda-expression},
substitution into its body is not in the immediate context.
\begin{note}
The intent is to avoid requiring implementations to deal with
substitution failure involving arbitrary statements.
Expand Down