#pragma once namespace saw { template class i_data_server { protected: virtual ~i_data_server() = default; }; 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>...>; }; } }