可変個引数テンプレートクラスで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を特殊化するにはどうすればよいですか?