2012-07-11 153 views
2

可能重複:
What is the meaning of 「… …」 token?C++ 11可變參數函數類型模板參數

有直接指定函數類型(至少作爲模板參數相對較新的方法)。不知道這是嚴格的C++ 11,但是我在閱讀GCC 4.7的STL頭文件時遇到了這個問題。

是這樣的:

std::function<void(int, char**)> f; 

而現在,在頭文件<functional>,我看到以下內容:

template <typename R, typename... A> 
struct SomeStruct<R(A...)> { /* */ }; 

這是可以理解的:的SomeStruct明確分工的函數類型與返回鍵入R和參數類型A

但考慮這個聲明(關於下一行):

template <typename R, typename... A> 
struct SomeStruct<R(A......)> { /* */ }; 

是什麼雙省略號的意思嗎?

+0

啊,對。這是重複的,對不起。 – intelfx 2012-07-11 06:43:30

回答

3

我個人覺得還不清楚,但如果你知道這些是等價的,它更有意義:

void example(int, char, ...); // C-style variadic arguments 
void example(int, char...); // equivalent: the comma before the ellipses is optional 

這樣專業化只是覆蓋了當功能採取的形式的情況下:

R(A..., ...) 

如在sprintfRintA...char*const char*,它的C風格的可變參數。

相關問題