C++ Logo

std-discussion

Advanced search

Re: CNTTP defaulted to lambda in definition produces different type every time

From: Daniel Krügler <daniel.kruegler_at_[hidden]>
Date: Thu, 27 Apr 2023 17:08:10 +0200
Am Do., 27. Apr. 2023 um 17:05 Uhr schrieb Thiago Macieira via
Std-Discussion <std-discussion_at_[hidden]>:
>
> Is this intended with C++20's class-type NTTPs?

No,

see

https://cplusplus.github.io/CWG/issues/cwg_active.html#2542

> template <auto Call = []{}> struct S {};
> static_assert(!std::is_same_v<S<>, S<>>);
>
> It passes the compilation in the three major compilers that have implemented
> the feature in the first place:
> https://conformance.godbolt.org/z/edf8Pv71j
>
> I'm not asking to change this. I actually want it this way. But I'd like a
> confirmation that this is the intention and won't suddenly break my code later.

It is not intended and it is likely that compilers will adjust to make
that ill-formed.

- Daniel

Received on 2023-04-27 15:08:17