digitalmars.D - Re: Proposal: Static Invariant (C++ concept in D)
- Robert Fraser <fraserofthenight gmail.com> Sep 17 2007
davidl Wrote:I've read a little bit stuff of C++ concept, and find it has some similarity with D's runtime invariant in some abstraction. In some extent , we can imagine C++ concept is kind of compile time invariant. So the following: class TemplateClass(T) { static invariant() // reuse keywords, nothing more get introduced { // prerequisite checking, does T have foo , does T have bar Base_Concept_check(); // these emulate the inheritance of concept Derived_Concept_check(); } } Thanks for the great discussion & help from h3r3tic, LeoD, Alexander, Larsivi They gave me some comments, and ideas. Though it might not functionate all possiblities of C++ concept , but it brings us a little bit more powerful way to make sure our templates go all fine. Hope people love this idea :D DavidL
Isn't this what a static assert is? If you want sets of static assertions, you can always use template mixins. template LionAssertions() { static assert(Lion.foodChainPosition == FoodChain.max); static assert(Mufasa > Aslan, "this program contains evil lies"); } class Lion : AwesomenessIncarnate { mixin LionAssertions!() }
Sep 17 2007