On 03/05/13 00:23, H. S. Teoh wrote: > On Tue, Mar 05, 2013 at 12:17:06AM +0100, Marco Leise wrote: >> Am Mon, 04 Mar 2013 23:36:29 +0100 >> schrieb "bearophile" <[email protected]>: >> >>> jerro: >>> >>>> Of course, expression templates should also be much easier >>>> to implement in D than they are in C++. >>> >>> I don't remember seeing them implemented in D, so far. >>> >>> Bye, >>> bearophile
They are trivial to implement, i even gave you an example in the past: http://forum.dlang.org/post/[email protected] >> It's not as easy to do without C++'s convoluted constructor >> lookup rules. The clean approach of D makes it impossible to >> call a constructor implicitly like they do on the Wikipedia >> page about expression templates. >> But the approach with a small DSL looks ok, too. Not quite as >> seamless as the C++ version though. > [...] > > The advantage of using DSLs is that you are free of syntax constraints One problem with string-based DSLs is scoping - they only work properly when mixed in into the current scope. auto c = mixin(myDSL!"a?:+:b"); mixin myDSL!("c", "a?:+:b"); mixin (myDSL!("c", "a?:+:b")); // etc is sometimes enough, but often the code would be clearer w/o the mixin. artur
