相关疑难解决方法(0)

如何在转换运算符中使用std :: enable_if?

基本上我希望我的范围类型可以隐式转换Range<const char>Range<const unsigned char>.std :: enable_if似乎不可能,因为该函数不带参数且没有返回.是什么工作?

这基本上是我尝试过的:

template<typename T>
class Range{
    T* begin_;
    T* end_;
public:
    Range(T* begin,T* end):begin_{begin},end_{end}{}
    template<int N>
    Range(T (&a)[N]):begin_{static_cast<T*>(&a[0])},end_{static_cast<T*>(&a[N-1])}{}
    T* Begin(){return begin_;}
    T* End(){return end_;}
    operator typename std::enable_if<std::is_same<T,const char>::value,Range<const unsigned char>&>::Type (){
        return *reinterpret_cast<Range<const unsigned char>*>(this);
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ metaprogramming sfinae enable-if

6
推荐指数
1
解决办法
2361
查看次数

标签 统计

c++ ×1

enable-if ×1

metaprogramming ×1

sfinae ×1