現在我在C++在std :: array中使用默認參數進行C++函數調用?
void F(std::array<int,3> x)
{
//...
}
一個功能,我希望參數「X」可以有一個默認值,我怎麼能這樣做呢?
如果沒有一個函數的參數,我可以簡單地使用
std::array<int,3> x = {1,2,3};
但對於一個函數參數,代碼
void F(std::array<int,3> x = {1,2,3})
{
//...
}
將使編譯器錯誤。
我在MSVC 2012中測試,並且得到錯誤C2143,C2059,C2447。 而且還錯誤的G ++ 4.6.3
有什麼辦法讓它有一個默認值?
謝謝。
什麼編譯器錯誤?哪個編譯器? (這可能是一個bug .. clang3.2接受你的代碼;我認爲你的例子符合標準 - 它是聚合初始化) – dyp 2013-05-02 11:20:14
我已經添加了一個錯誤。 它看起來是我的編譯器不支持這種語法呢...... – Heresy 2013-05-02 11:36:43
我發現了一個愚蠢的解決方法...使用lambda表達式。 (void){(std :: array x = [](){std :: array x = {1,2,3}; return x;}()){}'這對MSVC11和G ++ 4.6都有效0.3。 –
Heresy
2013-05-02 12:24:19