'Is constrained auto cast valid?
Since C++20, the constrained auto is introduced by:
Concept auto identifier = init
Which means, for instance:
std::integral auto x = 10;
is valid.
Also, for new-expressions, concept is allowed to be paired with auto:
new Concept auto { expr };
// or:
new Concept auto ( expr );
auto{expr} or auto(expr) was introduced in C++23 as roughly equivalent to:
auto __temp { expr };
return __temp;
Does it mean that Concept auto { expr } or Concept auto ( expr ) is also valid?
The simple use case would be usable in trying to create a decay copy while checking its operations checked by constraint.
Solution 1:[1]
[dcl.spec.auto.general]/5 allows only auto to be the simple-type-specifier of a functional type conversion, even though a constrained placeholder-type-specifier can be a simple-type-specifier grammatically.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Davis Herring |
