2012-03-10 13 views
5

मैं सोच रहा था कि ... सी ++ 11 में ऑपरेटर माना जाता था। और यदि यह मामला है, तो इसकी प्राथमिकता क्या है?सी ++ 11 में, ... ऑपरेटर माना जाता है?

उदाहरण के लिए इस सुंदर बुरे उदाहरण पर विचार करें और मान लें ... एक ऑपरेटर है।

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

मुझे कैसे पता कर सकते हैं bar अपनी पहली पैरामीटर जा रहा है something और args... विस्तार के साथ चलाया जाएगा, या अपने वाला operator,(something, _args...) का परिणाम पर चलाया जाना है? (बोनस सवाल: ऑपरेटरों variadic टेम्पलेट के साथ अतिभारित किया जा सकता?)

+1

"ऑपरेटरों को विविध टेम्पलेट्स के साथ अधिभारित किया जा सकता है" नहीं। कम से कम, आपको ऐसा करके कुछ भी नहीं मिलेगा। ऑपरेटर हमेशा पैरामीटर की एक विशिष्ट संख्या लेते हैं। –

+0

देखें [यह] (http://stackoverflow.com/questions/2396065/c-overloading-operator-comma-for-variadic-arguments)। – ApprenticeHacker

+0

@qdii: हे, एनवीएम :) –

उत्तर

4

मैं सोच रहा था कि क्या ... सी ++ 11 में सी ++ एक ऑपरेटर 11

नहीं है, ... निश्चित रूप से विचार नहीं किया है में एक ऑपरेटर माना जाता था। क्या आपको याद है, यह भी त्रुटि हैंडलिंग

catch(...) 

में पिछले मानक में इस्तेमाल किया गया था और हालांकि मुझे यकीन है कि कैसे ... का विश्लेषण किया और आंतरिक रूप से पार्स किया गया है नहीं कर रहा हूँ, यह निश्चित रूप से एक ऑपरेटर के रूप में इलाज नहीं है।

ऑपरेटरों को विविध टेम्पलेट्स के साथ ओवरलोड किया जा सकता है?

मुझे यकीन नहीं है, लेकिन मुझे ऐसा नहीं लगता है।

int operator + (int param1, my_obj param2); 

मुझे नहीं लगता कि यह variadic टेम्पलेट के साथ काम करेगा: ऑपरेटर्स जैसे मानदंडों के एक निश्चित समूह लेना है।