C++ Logo

std-proposals

Advanced search

Re: Template qualifiers

From: Phil Bouchard <phil_at_[hidden]>
Date: Thu, 3 Oct 2019 00:26:02 -0400
Verdict?


On 10/2/19 8:42 AM, Phil Bouchard wrote:
>
>
> On 10/2/19 8:29 AM, Barry Revzin wrote:
>> On Tue, Oct 1, 2019 at 12:56 PM Phil Bouchard via Std-Proposals
>> <std-proposals_at_[hidden]
>> <mailto:std-proposals_at_[hidden]>> wrote:
>>
>> [I apologize for my mistakes, I wrote the email very quickly]
>>
>> 2 things here:
>>
>> 1. "constexpr" would ideally need to be treated like a qualifier.
>> This way it could propagate like cv qualifier.
>>
>> constexpr is not part of the /type /system, it cannot be treated like
>> qualifier. Given:
>>
>> constexpr int i = 1;
>> int const j = 2;
>>
>> The types of i and j are the same, both int const. There is a
>> proposal (P1045) for constexpr parameters, but there constexpr would
>> work very differently than the way qualifiers work: a constexpr
>> parameter would [have to] behave like a template.
>>
>> If you want to "propagate" constexpr, you just declare your function
>> constexpr. constexpr is already conditionally constexpr.
>>
>> Barry
>
> Well it won't work in my case where we have an "in between" wrapper:
>
> struct NonConstClass
>
> {
>
> NonConstClass() {}
>
> };
>
> struct ConstClass
>
> {
>
> constexpr ConstClass() {}
>
> };
>
>
> template <typename T>
>
> struct construct
>
> {
>
> T operator () (node_proxy &, T && t) { return T(t); } // will
> lose constexpr
>
> };
>
>
> --
>
> *Phil Bouchard*
> Founder
> C.: (819) 328-4743
>
> Fornux Logo <http://www.fornux.com>
-- 
*Phil Bouchard*
Founder
C.: (819) 328-4743
Fornux Logo <http://www.fornux.com>

Received on 2019-10-02 23:28:14