[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Add and use a Transform data type (issue 344970043 by address@hidden

From: Hans Åberg
Subject: Re: Add and use a Transform data type (issue 344970043 by address@hidden)
Date: Fri, 22 Jun 2018 14:24:01 +0200

> On 22 Jun 2018, at 11:09, David Kastrup <address@hidden> wrote:
> Hans Åberg <address@hidden> writes:
>>> You could also do it as a constructor, if you prefer its syntax and
>>> don't mind implementing yet another one:
>>>   explicit Transform(const Transform *t) ...
>> One can also use a tag type argument in the constructor:
>>  struct make_t {};
>>  constexpr make_t make{};
> What would that be good for?

There are various uses in the C++ library. I found it useful for in a reference 
class I wrote:
  template<class A>
  class ref {
    A* data_ = nullptr;

    template<class... B>
    ref(make_t, B&&... bs) : data_(finalize(new (collect) A(bs...))) {}
A direct constructor taking an operator new pointer would not be able to do the 
GC registering. 

It admits a syntax:
  ref<A> a(make, ...);
  auto a = ref<A>(make, ...);
with the ... arguments passed to the A constructor.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]