Why is this?
rikki cattermole via Digitalmars-d
digitalmars-d at puremagic.com
Mon Sep 5 23:53:29 PDT 2016
On 06/09/2016 6:42 PM, rikki cattermole wrote:
> On 06/09/2016 6:23 PM, Manu via Digitalmars-d wrote:
>> On 6 September 2016 at 16:10, rikki cattermole via Digitalmars-d
>> <digitalmars-d at puremagic.com> wrote:
>>> On 06/09/2016 6:07 PM, Manu via Digitalmars-d wrote:
>>>>
>>>> I have weird thing:
>>>>
>>>> template E(F){
>>>> enum E {
>>>> K = F(1)
>>>> }
>>>> }
>>>>
>>>> struct S(F = float, alias e_ = E!double.K) {}
>>>
>>> typeof(E!double.K)
>>
>> == double ?? Not sure what you're saying.
>
> Basically your code only it is using typeof to get the type after all K
> is a value and alias is for types.
>
> template E(F){
> enum E {
> K = F(1)
> }
> }
>
> struct S(F = float, alias e_ = typeof(E!double.K)) {
> pragma(msg, e_); // E
> pragma(msg, E!double.K); // 1.0
> pragma(msg, typeof({return E!double.K;}())); // E
> }
>
> S!float x;
>
> But yes little weird.
*sigh* I'm not thinking right that alias is template argument alias not
alias of types.
template E(F){
enum E {
K = F(1)
}
}
struct S(F = float, V=E!double, V e_ = V.K) {
pragma(msg, e_); // E
pragma(msg, E!double.K); // 1.0
pragma(msg, typeof({return E!double.K;}())); // E
}
S!float x;
More information about the Digitalmars-d
mailing list