我似乎找不到将 SFINAE 与可变参数模板类一起使用的好的解决方案。
假设我有一个不喜欢引用的可变参数模板对象:
template<typename... Args>
class NoRef
{
//if any of Args... is a reference, this class will break
//for example:
std::tuple<std::unique_ptr<Args>...> uptrs;
};
还有一个可以方便地检查参数包是否包含引用的类:
template<typename T, typename... Other>
struct RefCheck
{
static const bool value = std::is_reference<T>::value || RefCheck<Other...>::value;
};
template<typename T>
struct RefCheck<T>
{
static const bool value = std::is_reference<T>::value;
};
对于 arg 包中存在引用的情况,我如何使用它来专门化 NoRef?