Thread overview | ||||||
---|---|---|---|---|---|---|
|
May 13, 2019 D metaclass stuff vs C++23 | ||||
---|---|---|---|---|
| ||||
Attachments:
| Hi, In the "show what can be done, not what should be done" category, someone has done a C++ version of Hello World using the up-coming metaclass stuff: https://twitter.com/Cor3ntin/status/1127210941718962177 I immediately (once I knew about it) replied with the Python version: https://twitter.com/russel_winder/status/1127859587393163265 class Hello: pass World = None if __name__ == '__main__': print(" ".join([item for item in dir() if not item.startswith("_")])) but clearly a better competitor would be a D version. Anyone done this sort of thing, i.e. compile time metaclass manipulation? -- Russel. =========================================== Dr Russel Winder t: +44 20 7585 2200 41 Buckmaster Road m: +44 7770 465 077 London SW11 1EN, UK w: www.russel.org.uk |
May 13, 2019 Re: D metaclass stuff vs C++23 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Russel Winder | On Monday, 13 May 2019 at 09:06:07 UTC, Russel Winder wrote:
> Hi,
>
> In the "show what can be done, not what should be done" category, someone has done a C++ version of Hello World using the up-coming metaclass stuff:
>
> https://twitter.com/Cor3ntin/status/1127210941718962177
>
> I immediately (once I knew about it) replied with the Python version:
>
> https://twitter.com/russel_winder/status/1127859587393163265
>
>
> class Hello: pass
>
> World = None
>
> if __name__ == '__main__':
> print(" ".join([item for item in dir() if not item.startswith("_")]))
>
>
> but clearly a better competitor would be a D version. Anyone done this sort of thing, i.e. compile time metaclass manipulation?
Something like this is possible (for a long time now, I think...),
´´´
import std.format;
struct Hello;
int World;
pragma(msg, format!"%s %s"(__traits(allMembers, mixin(__MODULE__))[$-2 .. $]));
´´´
but I'm sure, more cool versions are possible ;)
|
May 13, 2019 Re: D metaclass stuff vs C++23 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Russel Winder | On 5/13/19 10:06 AM, Russel Winder wrote:
> Hi,
>
> In the "show what can be done, not what should be done" category,
> someone has done a C++ version of Hello World using the up-coming
> metaclass stuff:
>
> https://twitter.com/Cor3ntin/status/1127210941718962177
>
> I immediately (once I knew about it) replied with the Python version:
>
> https://twitter.com/russel_winder/status/1127859587393163265
>
>
> class Hello: pass
>
> World = None
>
> if __name__ == '__main__':
> print(" ".join([item for item in dir() if not item.startswith("_")]))
>
>
> but clearly a better competitor would be a D version. Anyone done this
> sort of thing, i.e. compile time metaclass manipulation?
I replied with a no-brainer equivalent.
|
May 13, 2019 Re: D metaclass stuff vs C++23 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Alex | On 5/13/19 11:25 AM, Alex wrote: > On Monday, 13 May 2019 at 09:06:07 UTC, Russel Winder wrote: >> Hi, >> >> In the "show what can be done, not what should be done" category, someone has done a C++ version of Hello World using the up-coming metaclass stuff: >> >> https://twitter.com/Cor3ntin/status/1127210941718962177 >> >> I immediately (once I knew about it) replied with the Python version: >> >> https://twitter.com/russel_winder/status/1127859587393163265 >> >> >> class Hello: pass >> >> World = None >> >> if __name__ == '__main__': >> print(" ".join([item for item in dir() if not item.startswith("_")])) >> >> >> but clearly a better competitor would be a D version. Anyone done this sort of thing, i.e. compile time metaclass manipulation? > > Something like this is possible (for a long time now, I think...), > > ´´´ > import std.format; > struct Hello; > int World; > > pragma(msg, format!"%s %s"(__traits(allMembers, mixin(__MODULE__))[$-2 .. $])); > ´´´ > > but I'm sure, more cool versions are possible ;) The idea is to just provide something simple that doesn't introduce a bunch of stuff. Here's what I wrote: https://twitter.com/incomputable/status/1127891251666223105 |
Copyright © 1999-2021 by the D Language Foundation