2012-04-10 59 views
9

In this document中,筆者認爲將NON-POD類型傳遞給變量函數是未定義的行爲?

只有POD類型可以是省略號的參數「...」,而的std :: string不是一個POD類型。

我理解爲Passing NON-POD type to Variadic function is undefined behavior。這樣對嗎?
雖然,他是在說C/C++標準嗎?我試圖在n3242 C++規範中找到它。但找不到。

我想知道我的理解正確,這是一個標準。

回答

8

它指定在C++ 11 5.2.2/7:

傳遞具有一個非平凡複製構造類類型的潛在的評估參數,一個非平凡移動構造器,或非平凡的析構函數,沒有相應的參數,被實現定義的語義條件支持。

因此,每個編譯器是否支持或不支持;可移植代碼不能依賴任何實現定義的行爲。在較老的標準中,它只是未定義的。

+0

所以它是**實現定義** *不* **未定義**。 – 2012-04-10 06:11:01

+7

@Als:有條件支持;編譯器可以選擇不定義它。所以它是不確定的,不管它是否被定義。 – 2012-04-10 06:12:17

+1

謝謝你,你是如何發現這麼快的?我無法找到,每次我嘗試。你有什麼祕密嗎? – Benjamin 2012-04-10 06:34:34

相關問題