@@ -2017,6 +2017,14 @@ using merge_facade_conv_t = typename add_substitution_conv<
20172017 ? F::relocatability
20182018 : constraint_level::none>::type;
20192019
2020+ template <bool WithSubstitution>
2021+ struct add_facade_deprecation_traits : std::bool_constant<WithSubstitution> {};
2022+ template <>
2023+ struct [[deprecated(
2024+ " basic_facade_builder::add_facade<F, true> is deprecated; use "
2025+ " basic_facade_builder::add_facade_with_substitution<F> instead." )]]
2026+ add_facade_deprecation_traits<true > : std::bool_constant<true > {};
2027+
20202028} // namespace details
20212029
20222030template <class Cs , class Rs , std::size_t MaxSize, std::size_t MaxAlign,
@@ -2048,7 +2056,18 @@ struct basic_facade_builder {
20482056 using add_reflection = add_indirect_reflection<R>;
20492057 template <facade F, bool WithSubstitution = false >
20502058 using add_facade = basic_facade_builder<
2051- details::merge_facade_conv_t <Cs, F, WithSubstitution>,
2059+ details::merge_facade_conv_t <
2060+ Cs, F,
2061+ details::add_facade_deprecation_traits<WithSubstitution>::value>,
2062+ details::merge_tuple_t <Rs, typename F::reflection_types>,
2063+ details::merge_size (MaxSize, F::max_size),
2064+ details::merge_size (MaxAlign, F::max_align),
2065+ details::merge_constraint (Copyability, F::copyability),
2066+ details::merge_constraint (Relocatability, F::relocatability),
2067+ details::merge_constraint (Destructibility, F::destructibility)>;
2068+ template <facade F>
2069+ using add_facade_with_substitution = basic_facade_builder<
2070+ details::merge_facade_conv_t <Cs, F, true >,
20522071 details::merge_tuple_t <Rs, typename F::reflection_types>,
20532072 details::merge_size (MaxSize, F::max_size),
20542073 details::merge_size (MaxAlign, F::max_align),
0 commit comments