Re: Oh, no UFCS for member functions

2016-03-29 Thread Luís Marques via Digitalmars-d

On Tuesday, 29 March 2016 at 15:08:05 UTC, Anonymouse wrote:
The ugly workaround if you really don't want to reorganise 
things (and/or use the tile function directly) is to make a 
top-level alias tile = Player.tile;


Cool, I was not aware of that workaround. Also, I wonder if this 
workaround doesn't argue somewhat against the rationale for not 
having member-function UFCS, whatever it was.


Re: Oh, no UFCS for member functions

2016-03-29 Thread Anonymouse via Digitalmars-d

On Tuesday, 29 March 2016 at 14:56:53 UTC, Luís Marques wrote:

Too bad this doesn't work:

struct Player
{
MapTile[] playerMap; // partial private knowledge of map
Location destination;

auto tile(Location loc)
{
return playerMap[loc];
}

void foo()
{
if(destination.tile.hasMonster)
...
}
}


By design. I don't remember the rationale, though.

The ugly workaround if you really don't want to reorganise things 
(and/or use the tile function directly) is to make a top-level 
alias tile = Player.tile;


Oh, no UFCS for member functions

2016-03-29 Thread Luís Marques via Digitalmars-d

Too bad this doesn't work:

struct Player
{
MapTile[] playerMap; // partial private knowledge of map
Location destination;

auto tile(Location loc)
{
return playerMap[loc];
}

void foo()
{
if(destination.tile.hasMonster)
...
}
}