2016-03-20 6 views
2

私はカスタム演算子が公式にはC++でサポートされていないことを知っています。 そして私はすでにカスタム演算子を定義するためにthisを知っています。 しかしこのdoesntのは、特殊文字を含むカスタムオペレータのために働くように見えるので、私は、任意の安全な方法があるかどうかを知りまたはc中の特殊文字(のような<-または#)++特別な文字を持つカスタム演算子

+1

あなたの特定の例では、 '<'と '--'演算子のオーバーロードによって何かを行うことができます。しかし、一般的に、いいえ。 –

+0

既存の演算子に過負荷をかけないのはなぜですか?あなたがしたいことに似た何かをする既存の演算子は本当にありませんか? – Spencer

+0

絶対にない方法はありますか? – Exagon

答えて

3
struct A { 
    int x; 
}; 

template<class T> 
struct dashed { 
    T t; 
    template<class U> 
    operator U()&&{ return -std::move(t); } 
}; 

template<class T> 
dashed<T> operator-(T&& t){return {{std::forward<T>(t)}};} 

template<class T> 
A& operator<(A& lhs, dashed<T> rhs) { 
    lhs.x = rhs.t.x; 
    return lhs; 
} 

int main() { 
    A a{1}, b{2}; 
    std::cout << a.x << '\n'; 
    a <- b; 
    std::cout << a.x << '\n'; 
} 

live exampleでカスタム演算子を作成するためのハックしたいと思います。

一般的に、他の演算子を使用してこの特定の例<-をハックすることができます。

関連する問題