Updated:

less than 1 minute read

개요

  • 인자로 전달된 n개의 타입들이 변환할 수 있는 공통 타입으로 변환


예제

  • 코드
     #include <iostream>
     #include <string>
     #include <type_traits>
     #include <typeinfo>
        
     using namespace std;
        
     class Base {};
        
     class Derived : public Base {};
        
     template <typename T1, typename T2>
     auto plus_t(T1 t1, T2 t2) -> typename common_type<T1, T2>::type {
     	return t1 + t2;
     }
        
     int main() {
     	cout << typeid(common_type<int, float, double>::type).name() << endl;
     	cout << typeid(common_type<char, int>::type).name() << endl;
     	cout << typeid(common_type<char *, string>::type).name() << endl;
     	cout << typeid(common_type<Base, Derived>::type).name() << endl;
     	cout << typeid(common_type<Base *, Derived *>::type).name() << endl;
        
     	cout << plus_t(1, 1) << endl;
     	cout << plus_t(1, 1.1) << endl;
     	cout << plus_t("a", string("a")) << endl;
        
     	return 0;
     }
    
  • 실행 결과
     d
     i
     NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
     4Base
     P4Base
     2
     2.1
     aa