12 #include <type_traits>
27 template <
typename... extensions_t>
31 "all extensions must be default constructible");
33 "all extensions must be copy constructible");
35 "all extensions must be move constructible");
50 Extendable(
const std::tuple<extensions_t...>& extensions)
76 template <
typename... appendices_t>
78 appendices_t... aps)
const {
80 std::tuple_cat(
m_extensions, std::tuple<appendices_t...>(aps...));
81 return Extendable<extensions_t..., appendices_t...>(std::move(catTuple));
87 template <
typename extension_t>
88 const extension_t&
get()
const {
95 template <
typename extension_t>