6
我似乎無法找到使用SFINAE和variadic模板類的好解決方案。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?
+1。但我認爲'template struct NoRef:NoRef_ :: value,Args ...> {};'會更好。現在'NoRef'是沒有非類型模板參數(即布爾值)的不同類模板。 –
Nawaz
我喜歡這個解決方案,儘管我無法在MSVC中使用別名模板。但是,納瓦茲也提供了一個解決方案。 –