相关疑难解决方法(0)

为什么我不能添加带有类型查找的抽象层来剥离C++中的引用?

这是一个后续问题

为什么我不能在C++中使用转发引用的特征?

已经正确回答.但是我在下面尝试了自己的解决方案

https://godbolt.org/z/X7dBz1

#include <type_traits>

template <typename T, typename enable = void> struct Traits {
    static const bool value = false;
};

template <typename T> struct Traits<T,std::enable_if<std::is_reference<T>::value>> {
    static const bool value = Traits<typename std::remove_reference<T>::type>::value;

};

struct Zip{};
template <> struct Traits<Zip,void> {
    static const bool value = true;
};

template <typename E>
void Execute(E && e){
    static_assert(Traits<E>::value);
}

int main(){
    auto z = Zip();
    Execute(z);
}
Run Code Online (Sandbox Code Playgroud)

理论是,如果正确的专业化失败,那么下一个最专业化的将是基于if T是参考的匹配的那个.如果这匹配,则引用被剥离,我们希望得到一个匹配.但这似乎不起作用.有没有办法解决这个问题,保持我的尝试精神?

c++ type-traits perfect-forwarding c++11

0
推荐指数
1
解决办法
86
查看次数

标签 统计

c++ ×1

c++11 ×1

perfect-forwarding ×1

type-traits ×1