2012-03-10 78 views
5

我想知道......是否被認爲是C++ 11中的一個操作符。如果是這樣的話,它的優先級是什麼?在C++ 11中,是否被認爲是運算符?

例如考慮這個非常糟糕的例子,並假設...是一個操作符。

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

我怎麼能知道是否bar將與它的第一個參數是somethingargs...擴展運行,或者如果它要上的operator,(something, _args...)結果運行? (獎金問題:可運營可變參數模板超載?)

+1

「操作符可以重載可變模板」否。或者至少,你不會得到任何東西。操作員始終採用特定數量的參數。 – 2012-03-10 17:39:08

+0

請參見[this](http://stackoverflow.com/questions/2396065/c-overloading-operator-comma-for-variadic-arguments)。 – ApprenticeHacker 2012-03-10 17:39:27

+0

@qdii:heh,nvm :) – 2012-03-10 17:40:13

回答

4

我想知道是否......被認爲是C++ 11

沒有,...是絕對不能認爲是運營商在C++ 11的運營商。如果你還記得,它也被用來在以前的標準中的錯誤處理

catch(...) 

,雖然我不知道該如何...分析和內部分析,這是絕對不能視作操作符。

運算符是否可以使用可變參數模板重載?

我不確定,但我不這麼認爲。運營商必須採取指定的一組參數,如:

int operator + (int param1, my_obj param2); 

我不認爲它會與可變參數模板。

相關問題