现在我在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