On Mon, Sep 09, 2013 at 07:07:58PM +0200, Gyron wrote: > Hey there, I've experimented a little with UFCS today and ran into a > problem. > > My first question, which is kinda off-topic: > Why does D use the int type if you give it a number started with > 0x(hex), shouldn't it use uint for that ?
Good point, please file a bug on: http://d.puremagic.com/issues > Here comes the real question: > I've extended the int by one function, which is the following (just > to represent the problem): > public static T read(T)(int address) > { > return cast(T)1; > } > > It works perfectly if the function stands alone (is global), but it > doesn't work if I put it into a class (because I want it to be a bit > more organized) like that: > class CMemory > { > public static T read(T)(int address) > { > return cast(T)1; > } > } > > I'm not able to write something like: > 0x1212.CMemory.read!bool(); > > > So the question is, how can I make it to be able to be used like > this: > 0x1212.read!bool(); > > but still organized within the class ? I don't think UFCS works with qualified names right now. This is a known issue. The best way to solve this problem is to put your function in a separate module instead of a class, then importing the module will pull it into your current namespace and you can use it as above, yet have it organized by module (but not by class -- that's unfortunately not possible right now). Something like this: ----memory.d---- module memory; T read(T)(int address) { ... } ----main.d---- import memory; void main() { 0x1212.read!bool(); } T -- Shin: (n.) A device for finding furniture in the dark.