C++ Logo

std-proposals

Advanced search

Re: Template qualifiers

From: Phil Bouchard <phil_at_[hidden]>
Date: Wed, 2 Oct 2019 08:42:58 -0400
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>

Received on 2019-10-02 07:45:10