/*****************************************************************
Name : 
Date : 2017/04/04
By   : CharlotteHonG
Final: 2017/04/04
*****************************************************************/
#include <iostream>
using namespace std;

template<class T, class T2>
auto fun1(T a,  T2 b) -> decltype(a+b){
    return a+b;
}

template<class T, class T2>
auto fun2(T a,  T2 b){
    return a+b;
}

template<class T, class T2>
decltype(auto) fun3(T a,  T2 b){
    return a+b;
}


/*==============================================================*/
int main(int argc, char const *argv[]){
    cout << "fun=" << fun1(1, 1.5) << endl;
    cout << "fun=" << fun2(1, 1.5) << endl;
    cout << "fun=" << fun3(1, 1.5) << endl;

    return 0;
}
/*==============================================================*/