我正在尝试静态检查可变参数模板参数列表中是否存在类型。但是,此模板列表实际上存在于传递单一类型的类中。此处的答案显示了如何检查参数列表或参数包,但我不确定如何测试包含可变参数模板的类。
例如
template <typename ...S>
class Services {};
template <typename Services>
class ServiceLocator
{
public:
template <typename T>
T& Resolve()
{
static_assert( check_t_exists_in_variadic_template_within_Services );
return Find<T>();
}
};
我可以在这个 static_assert 中写什么来确保检查对这个服务定位器的每个调用,并且如果使用服务内的模板参数列表中不存在的类型调用 Resolve,则会引发编译器错误?
我特别关注的是:
static_assert(is_any<T,Services::S...>::value, "T does not exist in Services::S");