Nie mogę znaleźć dobrego rozwiązania dla używania SFINAE z klasami szablonów variadic.SFINAE z klasami szablonów variadic?
Powiedzmy mam zmiennej liczbie argumentów szablonu przedmiot, który nie lubi nazwy:
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;
};
I klasy, która wygodnie sprawdza jeśli paczka argument zawiera nazwy:
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;
};
Jak używać to specjalizować NoRef dla przypadku, gdy referencje są obecne w pakiecie arg?
+1. Ale myślę, że 'szablon struct NoRef: NoRef_ :: value, Args ...> {};' byłoby lepiej. Teraz 'NoRef' jest szablonem innej klasy bez parametru szablonu nie typu (tj. Wartości boolowskiej). –
Nawaz
Podoba mi się to rozwiązanie, mimo że nie mogę pseudonimować szablonów w MSVC. Ale Nawaz również to rozwiązał. –