Direct look at the source code:

#include <QApplication> #include <iostream> int add1(int a, int b) { return a + b; } class ADD { public: int operator()(int a, int b) { return a + b; }}; template <typename T, typename U> auto add3(T a, U b) -> decltype(a + b) { return a + b; } auto add4 = [](int a, int b) -> int { return a + b; }; int main(int argc, char *argv[]) { QApplication a(argc, argv); ADD add2; std::cout << add1(3, 4); std::cout << add2(3, 4); std::cout << add3(3, 4); std::cout << add4(3, 4); return a.exec(); }Copy the code