#pragma once #include namespace saw { template class i_data_server { protected: ~i_data_server() = default; public: virtual std::pair get_class_id() const = 0; }; template class data_server; template class data_client; namespace impl { template struct data_server_redux { using type = std::tuple<>; }; template struct data_server_redux> { using type = std::tuple>...>; }; } }