2012-03-10 15 views
5

私はC++ 11で演算子とみなされたのかどうか疑問に思っていました。そしてそれが事実なら、その優先順位は何ですか?C++ 11では、演算子と見なされますか?

たとえば、この非常に悪い例を考えてみましょう。...は演算子です。私はbarは、その最初のパラメータはsomethingargs...ことで実行されるかどうかを知ることができますどのように

template<typename T, typename...Args> 
void foo(T _elm, Args... _args) 
{ 
    bar(something,_args...); 
} 

拡大、またはそのつもりはoperator,(something, _args...)の結果で実行する場合は? (ボーナス質問は:事業者は、可変長引数テンプレートをオーバーロードすることはできますか?)

+1

"演算子にバリデーショナルテンプレートがオーバーロードされる可能性があります"いいえ、少なくとも、実行することで何も得られません。演算子は常に特定の数のパラメータをとります。 –

+0

[this](http://stackoverflow.com/questions/2396065/c-overloading-operator-comma-for-variadic-arguments)を参照してください。 – ApprenticeHacker

+0

@qdii:Heh、nvm :) –

答えて

4

は私が... C++ 11でC++ 11

いいえ、...は間違いなく考慮されていない事業​​者でオペレーターと考えられていたかどうかを疑問に思いました。あなたは覚えていれば、それはまた、エラー処理

catch(...) 

で、前の標準で使用されたと私は...が分析され、内部的に解析されるかわからないけれども、それは間違いなく演算子として扱われていません。

演算子にバリデーションテンプレートをオーバーロードさせることができますか?

私は確信していませんが、私はそうは思わないです。私はそれが可変引数テンプレートに働くだろうとは思わない

int operator + (int param1, my_obj param2); 

:演算子は次のようにパラメータの指定されたセットを取らなければなりません。

関連する問題