相关疑难解决方法(0)

std :: common_type实现

为了看看它是如何工作的,我查看std::common_type了头文件中的libstdc ++实现type_traits.我不得不承认我并不真正理解它是如何运作的.这里是:

/// common_type
template<typename... _Tp>
    struct common_type;

template<typename _Tp>
    struct common_type<_Tp>
    { typedef _Tp type; };

template<typename _Tp, typename _Up>
    struct common_type<_Tp, _Up>
    { typedef decltype(true ? declval<_Tp>() : declval<_Up>()) type; };

template<typename _Tp, typename _Up, typename... _Vp>
    struct common_type<_Tp, _Up, _Vp...>
    {
        typedef typename
        common_type<typename common_type<_Tp, _Up>::type, _Vp...>::type type;
    };
Run Code Online (Sandbox Code Playgroud)

我很清楚第一,第二和第四声明如何运作.但是,我无法理解第三个声明的工作原理.有人可以尝试解释这里使用的机制吗?

c++ g++ type-traits c++11

10
推荐指数
1
解决办法
1197
查看次数

标签 统计

c++ ×1

c++11 ×1

g++ ×1

type-traits ×1