나는 가변적 인 템플릿 클래스와 함께 SFINAE를 사용하는 좋은 해결책을 찾지 못하는 것 같다.가변 템플릿 클래스가있는 SFAAE?
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를 전문화하려면?
+1. 하지만 생각해 보면'template 구조체 NoRef : NoRef_ :: value, Args ...> {};'더 좋을 것입니다. 이제 'NoRef'는 템플릿 템플릿 매개 변수가 아닌 다른 클래스 템플릿입니다 (예 : 부울 값). –
Nawaz
MSVC에서 아직 템플릿 별칭을 지정할 수는 없지만이 솔루션이 마음에 듭니다. 그러나 Nawaz는 그 해결책을 제공했습니다. –