기본적으로 범위 형식을 Range<const char>
에서 Range<const unsigned char>
으로 암시 적으로 변환 할 수있게하려고합니다. std :: enable_if는 함수가 인수를 취하지 않고 반환하지 않기 때문에 불가능한 것처럼 보입니다. 무슨 일이야? 여기변환 연산자에서 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);
}
};
왜 'Loki :: IsSameType <>'대신'std :: is_same <>'을 사용하지 않으시겠습니까 ?? – Walter
나는 ARM 피질에 베어 메탈을 프로그래밍하고 있는데, Loki를 작동시키기 위해서 처음에는 더 쉬웠다. 좋은 점과 내가 바꿨다;) – odinthenerd
변환 연산자가 정말로 필요한가요? 또는'operator = '및 생성자로 살 수 있습니까? – Walter