lilypond-devel
[Top][All Lists]
Advanced

[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 {
  protected:
    A* data_ = nullptr;

  public:
  ...
    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]