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