Meta++: Language Support for Advanced Generative Programming - Andrew Sutton - CppCon 2019
ฝัง
- เผยแพร่เมื่อ 25 ส.ค. 2024
- CppCon.org
Discussion & Comments: / cpp
Presentation Materials: github.com/Cpp...
-
Meta++: Language Support for Advanced Generative Programming
For the past several years, we have been working with Herb Sutter on C++ language support for Metaclassses. In order to implement this feature, we’ve had to invent a myriad of new language features, including scalable features for static reflection, the ability to inject partial definitions classes, namespaces, and functions, and the ability to clone and inject (with modifications) existing declarations. All of these capabilities are a precursor to supporting metaclasses.
In this talk, we present the background of this work, the constraints under which the features were designed, and the current status of our work. We will discuss many of the new language features that we’ve created, by giving examples to show how they might be used. Finally, we’ll explain how these metaprogramming features support metaclasses and explain how metaclasses can be used as a new kind of tool for library developers.
-
Andrew Sutton
Andrew Sutton is an owner of Lock3 Software, LLC, a software research and development company in Kent, Ohio. His spends his days working on C++ language extensions in Clang and GCC and working on various WG21 language proposals.
His past work included the design, specification, and implementation (in GCC) of concepts along with Bjarne Stroustrup and Gabriel Dos Reis. His current big project is language support for reflection and generative metaprogramming, which directly support Herb Sutter's metaclass proposal.
-
Videos Filmed & Edited by Bash Films: www.BashFilms.com
*-----*
Register Now For CppCon 2022: cppcon.org/reg...
*-----*
This was my most anticipated talk from this year's cppcon. It's amazing how much potential this has for the language and mostly for future libraries. I can already see how you could do generate serialization libraries or ORM libraries, which we already have in other languages, of course without the run-time overhead as well.
I'm in fear of how exactly this stuff will be debugged
Feels very much like this approach demands the programmer say how to accomplish the task, rather than to say what task to accomplish, which, as we all know, is a good way to produce code which does not say what it means.
Circle seems much cleaner and powerful to me. Why is the committee not looking into including something like it? github.com/seanbaxter/circle