Re: Copying parameter lists verbatim

2014-07-20 Thread Jakob Ovrum via Digitalmars-d
On Saturday, 19 July 2014 at 17:40:01 UTC, Andrei Alexandrescu 
wrote:

On 7/19/14, 9:36 AM, Jakob Ovrum wrote:
On Saturday, 19 July 2014 at 06:13:10 UTC, Manu via 
Digitalmars-d wrote:

Anyway, does anybody know a nice tidy way to do it?


Unfortunately the only way to create perfect forwarding 
functions

completely generically is still using an ugly string mixin that
generates the forwarding function. A subset of forwarding 
functions can
be created using templates and auto-ref, but of course a 
function

template has many disadvantages to a concrete function (virtual
functions being a good example).


How can this be encapsulated as a library artifact? -- Andrei


Since the key parts of the forwarding function - the parameter 
list and attribute list - are part of the signature, the entire 
function declaration has to be mixed in. That means the function 
body has to be provided as a string argument. This tends to cause 
some seriously unreadable code. It may be a lost cause but I'm 
hoping we can amend the language to avoid that.


Re: Copying parameter lists verbatim

2014-07-19 Thread Dicebot via Digitalmars-d
Also, vibe.d internal `cloneFunction` which generates copy of 
method/function signature with fully qualified type names (for 
mixin hygiene): 
https://github.com/rejectedsoftware/vibe.d/blob/master/source/vibe/internal/meta/codegen.d#L177


Re: Copying parameter lists verbatim

2014-07-19 Thread Dicebot via Digitalmars-d

http://dlang.org/phobos/std_traits.html#ParameterIdentifierTuple
http://dlang.org/phobos/std_traits.html#ParameterDefaultValueTuple
http://dlang.org/phobos/std_traits.html#ParameterTypeTuple

?


Re: Copying parameter lists verbatim

2014-07-19 Thread Jakob Ovrum via Digitalmars-d
On Saturday, 19 July 2014 at 06:13:10 UTC, Manu via Digitalmars-d 
wrote:

Anyway, does anybody know a nice tidy way to do it?


Unfortunately the only way to create perfect forwarding functions 
completely generically is still using an ugly string mixin that 
generates the forwarding function. A subset of forwarding 
functions can be created using templates and auto-ref, but of 
course a function template has many disadvantages to a concrete 
function (virtual functions being a good example).


Re: Copying parameter lists verbatim

2014-07-19 Thread Andrei Alexandrescu via Digitalmars-d

On 7/19/14, 9:36 AM, Jakob Ovrum wrote:

On Saturday, 19 July 2014 at 06:13:10 UTC, Manu via Digitalmars-d wrote:

Anyway, does anybody know a nice tidy way to do it?


Unfortunately the only way to create perfect forwarding functions
completely generically is still using an ugly string mixin that
generates the forwarding function. A subset of forwarding functions can
be created using templates and auto-ref, but of course a function
template has many disadvantages to a concrete function (virtual
functions being a good example).


How can this be encapsulated as a library artifact? -- Andrei