C ++使用声明和类型别名

时间:2019-02-18 02:06:43

标签: c++ c++11 c++14 c++17

在libstdc ++变体实现源中,有一个C ++ using-declaration用例,这使我感到困惑。

我在下面简化了相关代码。使用_Base :: _ Base的“用例2”似乎是类内的using声明,但是_Base没有名为_Base的成员。这是什么意思为什么需要它?

template<bool __trivially_destructible, typename... _Types>
    struct _Variant_storage;

template<typename... _Types>
    struct _Variant_storage<false, _Types...> {
        constexpr _Variant_storage() {}
        //more... 
    };

template<typename... _Types>
    struct _Variant_storage<true, _Types...> {
        constexpr _Variant_storage() {}
        //more... 
    };

template<typename... _Types>
    bool _S_trivial_dtor = ( is_destructible_v<_Types> && ... );

template<typename... _Types>
    using _Variant_storage_alias =
        _Variant_storage<_S_trivial_dtor<_Types...>, _Types...>;

template<bool, typename... _Types>
    struct _Copy_ctor_base : _Variant_storage_alias<_Types...>
    {
        using _Base = _Variant_storage_alias<_Types...>;   // using case 1 
        using _Base::_Base;                                // using case 2
        //more...
    };

0 个答案:

没有答案