【发布时间】:2015-06-08 10:04:27
【问题描述】:
在某些条件下,我希望 SFINAE 去掉类模板的复制构造函数和复制赋值运算符。但是如果我这样做,就会生成一个默认的复制构造函数和一个默认的赋值运算符。 SFINAE 是基于我作为类模板参数传递的标签完成的。问题是,SFINAE 仅适用于模板,而复制构造函数/赋值运算符不能是模板。是否有解决方法?
【问题讨论】:
-
使用根据模板参数禁止复制构造函数/赋值的基类。
-
由于模板构造函数不是复制构造函数,它也不会阻止复制构造函数被隐式声明,这有时会比你的模板构造函数更受欢迎,所以这似乎是一个死胡同. @stefan 的评论似乎是一个很好的答案。
标签: c++ templates copy-constructor sfinae overload-resolution