#ifndef seafire__representation__content_negotiable_hxx_ #define seafire__representation__content_negotiable_hxx_ #include #include namespace seafire::representation { template class content_negotiable_t : public T { public: using model_type = T; using model_type::model_type; content_negotiable_t(model_type const& other) : model_type{other} {} content_negotiable_t(model_type&& other) : model_type{other} {} representation_t select(std::optional const&) const; static bool is_accepted(std::optional const&); private: template< typename CurrentFormat, typename... MoreFormats > representation_t select(std::optional const&) const; template< typename CurrentFormat, typename... MoreFormats > static bool is_accepted(std::optional const&); }; } // namespace seafire::representation #include #endif