On Friday, 4 January 2013 at 17:11:04 UTC, Philippe Sigaud wrote:
The declaration. The type, I guess I'd use an alias. Though, I guess the
alias syntax limitations would probably forbid that.

So yes, the local declaration is attributed, that works. How do I propagate
the attribute to the returned value?

I think you cannot.



Also, dropping the auto return is not accepted by the compiler, even though
it seems natural for me:

@(__traits(getAttributes, origin)) To transferAttributes(alias origin,
To)(To t)
{
    @(__traits(getAttributes, origin)) To temp = t;
...

'origin' is a template parameter and should be reachable to determine the
return type.


That's a bug.


Already filed?

Don't think so.




Anyway, you are attributing the function declaration here, not the return
type


Hmm. Would @(attr) { ReturnType } functionName (...)  work?


It looks we simply cannot modify existing declarations with UDAs.

@(attr) alias foo = bar; // @(attr) is ignored.

It is inconsistent with builtin attributes, which can create modified declarations out of existing ones. I am not sure whether it is a real problem.





Reply via email to