Remix.run Logo
cherryteastain 3 days 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 3 days 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 3 days ago | parent [-]

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

3 days ago | parent [-]
[deleted]
Toritori12 3 days 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 2 days ago | parent [-]

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