Hacker News new | ask | show | jobs
by pkaye 1990 days ago
What is wrong with that syntax?
1 comments

? nothing is wrong, it's just a different way to spell

    template<typename T>
    void F(T p) { ... }
No, not acually.

Generics in Go are vastly different than templates in C++. They might be used for similar things, but whereas Go's generics actually build up on Go's structural typing, templates are ... something completely different again.

I mean; C++ templates are Turing complete. They are in the same ballpark as Scala's type machinery. And I say that with adoration.

> I mean; C++ templates are Turing complete.

that's not a very high milestone to achieve. Even java generics are turing complete (https://arxiv.org/abs/1605.05274)

Holy crap, indeed!

The older I get, the more icky I find subtyping. It just makes things messy...

can i say T : SomeConstraint ?
in C++ ? sure

    template<SomeConstraint T>
    void F(T p) { ... }
or just

    void F(SomeConstraint auto p) { ... }

like this for instance: https://gcc.godbolt.org/z/hPM38T
cool, can i even add two constraints? or is it limited to one. Oh i see you have include concepts, is that new to c++20 then?