C ++ initializer_list参数 - 它们可以有默认值吗?

时间:2014-07-21 09:58:18

标签: c++ visual-c++

以下代码导致Visual Studio 2013中的C1001内部错误(v12.0.30501.00 Update 2) - 我应该期望它能够正常工作吗? (可下载的here

我希望能够在没有func参数的情况下调用vals函数,并使用默认值{10.0}

任何帮助表示赞赏!

C.hpp:

#include <string>
#include <initializer_list>
#pragma once

class C {
public:
    void func(std::string str, std::initializer_list<double> vals = { 10.0 });
};

C.cpp:

#include "stdafx.h"
#include "C.hpp"
#include <iostream>

using namespace std;

void C::func(std::string str, std::initializer_list<double> vals){
    cout << "str is " << str << endl;
    for (double v : vals){
        cout << v << endl;
    }
}

initializer_list_default_parameter.cpp:

#include "stdafx.h"
#include "C.hpp"

int _tmain(int argc, _TCHAR* argv[])
{
    C inst;
    inst.func("name"); // this line causes a C1001 error with MSVC 2013
    //inst.func("name", { 4.3 }); this line compiles
    return 0;
}

1 个答案:

答案 0 :(得分:1)

是的,initializer_list参数可以有默认值,但是MSVC 2013 x86编译器中存在一个错误,意味着它们不受支持(http://connect.microsoft.com/VisualStudio/Feedback/details/925540)。