реализация std :: common_type

Чтобы увидеть, как это работает, я посмотрел на реализацию libstdc ++std::common_type в шапкеtype_traits, Я должен признать, что я неЯ действительно не понимаю, как это работает. Вот:

/// common_type
template
    struct common_type;

template
    struct common_type
    { typedef _Tp type; };

template
    struct common_type
    { typedef decltype(true ? declval() : declval()) type; };

template
    struct common_type
    {
        typedef typename
        common_type::type type;
    };

Я хорошо понимаю, как работают первая, вторая и четвертая декларации. Тем не менее, я могуНе удалось понять, как работает третья декларация. Может кто-нибудь попытаться объяснить механизм, используемый здесь?

Ответы на вопрос(3)

Ваш ответ на вопрос