Proof of concept for v2 - NO duplication, NO `static if` hell, NO difficulty with interoperability

Andrei Alexandrescu SeeWebsiteForEmail at erdani.com
Mon Nov 1 17:24:53 UTC 2021


On 2021-11-01 11:00, jmh530 wrote:
> On Monday, 1 November 2021 at 13:18:07 UTC, Andrei Alexandrescu wrote:
>> [snip]
>>
>> The problem with C++ concepts is that they invent yet another language 
>> on the top of the three C++ already has in it. It is a massive 
>> mistake, though not big enough to destroy the language. C++ continues 
>> to be successful in spite of it, not because of it.
>>
>> The right way is to express concepts within the current language and 
>> algebra, as D does.
> 
> I know that it is kind of tangential to the PoC, but the point that was 
> raised is that concepts/etc resolve the issue of the "proper documenting 
> of API's". Your response is that concepts are bad because they create a 
> new language and it is better to express them within the current 
> language, as in D. This is all fine, but it doesn't resolve the issue of 
> "proper documenting of APIs" issue. Both points can be valid at the same 
> time (concepts might be bad for the reasons you mention but D may still 
> have an underlying issue wrt proper documenting of APIs).
> 
> My hope was that DIP 1023 (Resolution of Template Alias Formal 
> Parameters in Template Functions [1]) would help on this issue, but it 
> has been postponed and I believe the original author has moved on. 
> Regardless, the code below has the example of an template alias that is 
> used like a C++ concept.
> 
> ```d
> template Foo(T)
>      if (is(T == int))
> {
>      alias Foo = T;
> }
> 
> void foo(T)(Foo!T x) { }
> 
> void main() {
>      Foo!int x;
>      foo(x); //doesn't compile
>      foo!int(x); //compiles
> }
> ```
> 
> The only problem is the resolution. I don't see why you would need 
> concepts in D if this issue is resolved.
> 
> [1] https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1023.md

That code looks pretty damn cool.


More information about the Digitalmars-d mailing list