https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92171

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |INVALID

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
https://wg21.link/p2280 was accepted as a defect report against all versions of
C++.

and that makes this code valid.

ref.value is now a constexpr even though ref is not one after the paper.


(In reply to Marek Polacek from comment #4)
> I think this is another example:
> 
> template<int N> struct A {
>   static constexpr int size() { return N; }
> };
> 
> template<typename T> void f1(T t) {
>   constexpr int k = t.size();
> }
> 
> template<typename T> void f2(const T &t) {
>   constexpr int k = t.size(); // error
> }
> 
> template<typename T> void f3(const T &t) {
>   constexpr int k = T::size();
> }
> 
> void g(A<3> a)
> {
>   f1(a);
>   f2(a);
>   f3(a);
> }

This full example is also fully valid after this paper too.

Reply via email to