【发布时间】:2017-07-13 09:06:47
【问题描述】:
template<class T> struct is_vector : public std::false_type {};
template<class T, class Alloc>
struct is_vector<std::vector<T, Alloc>> : public std::true_type {};
template<typename T>
template<typename... Ys, typename = typename std::enable_if<is_vector<std::decay_t<Ys...>>::value>::type>
void A<T>::function(Ys &&... y){}
对于一个向量工作正常(没有可变参数模板的版本),但如果我尝试为可变参数模板做......它不起作用,我怎样才能为可变参数模板做好 SFINAE。有人可以解释一下为什么这不适用于可变参数模板以及我必须改进的地方。
【问题讨论】:
-
您的意思可能是
std::decay_t<Ys>...,但即使您修复它也会失败,因为is_vector不是可变参数。
标签: c++ variadic-templates sfinae