Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

    class A { public: int do() { return 1; } };
    class B { public: int do() { return 2; } };
    
    template <typename T> int do(T t) { return t.do(); }



How does one use that template? Can you show me a function that takes anything with a do() method? Like this?:

    do<A>(a)
    do<B>(b)
Can I take any arbitrary type with an "int do()" method and use that with do? Like:

    do(Arbitrary)


"How does one use that template? Can you show me a function that takes anything with a do() method? Like this?:"

It should work without the template parameter: do(a), do(b)

"Can I take any arbitrary type with an "int do()" method and use that with do?"

Yes.


cool


As dan00 noted, it works without the template as long as there is no ambiguity. If there's an ambiguity (a template function defined on <int, int> and <double, double> to which you provide an int and a double) then you have to use explicit template parameter to specify which overload will be used.

It's not the case here, so it just works.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: