Değişken şablon sınıflarıyla SFINAE'yi kullanmak için iyi bir çözüm bulamıyorum.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;
};
Ve elverişli bir argüman paketi başvuruları içeriyorsa kontrol eden bir sınıf: ben kullanırım nasıl
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;
};
ı başvuruları sevmez variadic şablon nesnesi var diyelim Bu arg paketi içinde mevcut referanslar için NoRef uzmanlaşmak için?
+1. Ama bence struct NoRef: NoRef_ :: value, Args ...> {}; 'daha iyi olurdu. Şimdi 'NoRef', non-type şablon parametresi olmayan (yani boolean değeri) farklı bir sınıf şablonudur. –
Nawaz
Bu çözümü, MSVC'de henüz takma ad yapılamamış olmama rağmen sevdim. Fakat Nawaz buna da bir çözüm getirdi. –