On Thursday, 7 May 2015 at 10:43:28 UTC, Daniel Kozak wrote:
On Thursday, 7 May 2015 at 10:39:09 UTC, Daniel Kozák wrote:
On Thu, 07 May 2015 10:33:44 +0000
Vadim Lopatin via Digitalmars-d-learn
<digitalmars-d-learn@puremagic.com> wrote:
struct S
{
int i;
auto foo2(T)(int j) {
i=j;
}
static S foo(T)(int j) {
S s;
s.foo2!T(j);
return s;
}
}
void main()
{
auto s = S.foo!bool(1);
}
As I said, it is not bug. It is OK. There is no way how you can
distinguish between static and non static methods or even
field in some
cases.
e.g.:
import std.stdio;
struct S
{
string foo = "Please select me?";
string foo() { return ("No, select me?"); };
static string foo() { return ("I am better than the otters
:D?"); };
}
void main()
{
auto s = S();
writeln(s.foo);
}
Well it's clear to me now why it shouldn't work.
However, the error msg is not clear on the problem. Imo it should
give a conflict error like in your previous example. That would
make it clear what's happened/allowed.
The current error seemed like it matched the wrong template,
prompting me to look for a buggy function template implementation.