Partial return type specification

Pelle pelle.mansson at gmail.com
Mon Oct 4 05:42:44 PDT 2010


On 10/04/2010 01:33 PM, bearophile wrote:
> Daniel Murphy:
>
>> Maybe typeof(return) is what you're looking for? *
>>
>> auto foo()
>> {
>>      return map!("a * a")([1, 2, 3, 4]);
>>      static assert(is(Unqual!(ForeachType!(typeof(return))) == int));
>> }
>>
>> * Not tested, I don't know if it works like this at all.
>
> That works, thank you. Yes, I am looking for syntax sugar for that code.
>
> Bye,
> bearophile

You can hack it with a string mixin :-)

string assertReturnsRangeOf(T)() {
     return "static assert (is(Unqual!(ForeachType!(typeof(return))) == "
         ~ T.stringof ~ "));";
}

auto foo() {
     return map!q{a*a}([1,2,3,4,5]);
     mixin (assertReturnsRangeOf!int);
}

You were probably looking for a more general and, well, good, solution. 
This does however convey some intent, and kind of works.


More information about the Digitalmars-d mailing list