在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...
};