diff --git a/sprout/container/container_traits.hpp b/sprout/container/container_traits.hpp index 23546d3b..3ecbb3c1 100644 --- a/sprout/container/container_traits.hpp +++ b/sprout/container/container_traits.hpp @@ -525,18 +525,18 @@ namespace sprout { #ifdef SPROUT_WORKAROUND_NEEDS_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT public: SPROUT_CONSTEXPR container_traits_facade() - : SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::inherit_if_value_type >) - , SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::inherit_if_iterator >) - , SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::inherit_if_const_iterator >) - , SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::inherit_if_reference >) - , SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::inherit_if_const_reference >) - , SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::inherit_if_size_type >) - , SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::inherit_if_difference_type >) - , SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::inherit_if_pointer >) - , SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::inherit_if_const_pointer >) - , SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::inherit_if_static_size >) - , SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::container_nosy_fixed_size >) - {} + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::inherit_if_value_type >) + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL(sprout::detail::inherit_if_iterator >) + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL(sprout::detail::inherit_if_const_iterator >) + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL(sprout::detail::inherit_if_reference >) + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL(sprout::detail::inherit_if_const_reference >) + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL(sprout::detail::inherit_if_size_type >) + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL(sprout::detail::inherit_if_difference_type >) + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL(sprout::detail::inherit_if_pointer >) + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL(sprout::detail::inherit_if_const_pointer >) + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL(sprout::detail::inherit_if_static_size >) + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL(sprout::detail::container_nosy_fixed_size >) + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_BODY #endif }; diff --git a/sprout/functional/type_traits/weak_result_type.hpp b/sprout/functional/type_traits/weak_result_type.hpp index f44f4b89..5bc16e84 100644 --- a/sprout/functional/type_traits/weak_result_type.hpp +++ b/sprout/functional/type_traits/weak_result_type.hpp @@ -83,8 +83,8 @@ namespace sprout { #ifdef SPROUT_WORKAROUND_NEEDS_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT public: SPROUT_CONSTEXPR weak_result_type() - : SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::weak_result_type_impl::type>) - {} + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(sprout::detail::weak_result_type_impl::type>) + SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_BODY #endif }; } // namespace sprout diff --git a/sprout/workaround/base_class_construct.hpp b/sprout/workaround/base_class_construct.hpp index ebc6a3bc..5897ce46 100644 --- a/sprout/workaround/base_class_construct.hpp +++ b/sprout/workaround/base_class_construct.hpp @@ -12,13 +12,17 @@ // // SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT +// SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL +// SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_BODY // -#ifndef SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT -# ifdef SPROUT_WORKAROUND_NEEDS_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT -# define SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(base) base() -# else -# define SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(base) -# endif +#ifdef SPROUT_WORKAROUND_NEEDS_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT +# define SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(base) : base() +# define SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL(base) , base() +# define SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_BODY {} +#else +# define SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT(base) +# define SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_TRAIL(base) +# define SPROUT_EXPLICIT_EMPTY_BASE_CLASS_CONSTRUCT_BODY SPROUT_DEFAULTED_DEFAULT_CONSTRUCTOR_DECL #endif #endif // #ifndef SPROUT_WORKAROUND_BASE_CLASS_CONSTRUCT_HPP