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.