Argument S to typeof is not an expression
Meta
jared771 at gmail.com
Mon May 6 23:41:24 PDT 2013
template Test(alias N)
if (isIntegral!(typeof(N)))
{
struct S
{
typeof(N) n = N;
auto opAdd(T)(T rhs)
{
//Error: argument S to typeof is not an expression
pragma(msg, typeof(T));
//Error: variable rhs cannot be read at compile time
return Test!(n + rhs.n);
}
}
auto st = S(N);
alias Test = st;
}
void main()
{
auto a = Test!2;
auto b = Test!3;
writeln(typeof(a).stringof ~ " a = ", a, ", ",
typeof(b).stringof ~ " b = ", b, ", ",
typeof(a + b).stringof ~ " a + b = ");
}
I don't really understand why either of these error messages are
occurring. The first is just incomprehensible, and the second
seems like it should work. In this case, rhs is fully accessible
at compile time in the expression (a + b), so why does the
compiler complain?
More information about the Digitalmars-d-learn
mailing list