language: C++11 (gcc-4.7.2)
date: 506 days 0 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
using namespace std;
 
int sumall(int a) { return a; }
int sumall(int a, int b) { return a+b; }
string sumall(string a, string b) { return a+" "+b; }
 
template<typename A1, typename A2, typename R>
auto doit( A1 a1, A2 a2, R (*f) (A1,A2)) -> R {
    return f(a1, a2);
}
template<typename A1, typename R>
auto doit( A1 a1, R (*f) (A1) ) -> R {
    return f(a1);
}
 
int main() {
   cout << doit(7, 6, sumall) << endl;
   cout << doit(10, sumall) << endl;
   cout << doit(string("hi"), string("ignored"), sumall) << endl;
}