Remix.run Logo
cherryteastain 7 months ago

I don't really see the point when C++ already lets you write

void foo(auto& t) { t.bar(); }

which can be called with any class that has the .bar() method anyway.

Maxatar 7 months ago | parent | next [-]

Because it can also be called with any class that doesn't have the bar method, and good luck deciphering the compiler error for it when it's nested 3 levels deep into some far corner of the STL.

lbhdc 7 months ago | parent [-]

That is what concepts fix. It lets you enforce at build time that `t` does have member `.bar()`.

7 months ago | parent [-]
[deleted]
Toritori12 7 months ago | parent | prev [-]

man I love learning good stuff by casually learning HN. I code on cpp as a hobby and kinda new you could use "auto" on templates by didn't know about this.

asyx 7 months ago | parent [-]

Check out concepts. That allows you to enforce the existence of the function. Also works with static functions and such.