namespace seafire::representation { template representation_t:: representation_t(R r) : r_{std::make_shared>(std::move(r))} {} template representation_t::container_t:: container_t(representation_type r) : r{std::move(r)} {} template protocol::media_type_t representation_t::container_t:: type() const { return r.type(); } template std::optional representation_t::container_t:: etag() const { if constexpr (representation_traits::has_entity_tag) return r.etag(); return {}; } template std::optional representation_t::container_t:: last_modified() const { if constexpr (representation_traits::has_last_modified) return r.last_modified(); return {}; } template void representation_t::container_t:: write_to(std::ostream& o) const { r.write_to(o); } } // namespace seafire::representation