decltype.cpp
#include <iostream>
template <typename T1, typename T2>
void Calculate(T1 a, T2 b);
template <typename T1, typename T2>
auto Add(T1 a, T2 b) -> decltype(a + b);
int main()
{
int a = 1;
double b = 1.2;
Calculate(a, b);
std::cout << "a + b = " << Add(a, b) << std::endl;
}
template <typename T1, typename T2>
void Calculate(T1 a, T2 b)
{
typedef decltype(a + b) tpab;
// decltype
tpab result1 = a + b;
std::cout << "a + b = " << result1 << std::endl;
// auto
auto result2 = a - b;
std::cout << "a - b = " << result2 << std::endl;
}
template <typename T1, typename T2>
auto Add(T1 a, T2 b) -> decltype(a + b)
{
return a + b;
}