小编Але*_*шов的帖子

由列表初始化初始化的函数参数的默认值

任何人都可以帮助我解决以下问题吗?

有一个简单的代码:

#include <vector>

struct A {
    std::vector<int> vec;
};

void func (A &&a = {}) {}

int main()
{
    func();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试通过gcc 5.4.0编译它时,我收到错误:

undefined reference to `std::vector<int, std::allocator<int> >::vector()'
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,但clang编译得很好.此外,如果稍微修改代码,它编译没有任何问题:

#include <vector>

struct A {
    std::vector<int> vec;
};

void func (A &&a) {}

int main()
{
    func({});
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我真的不明白第一个代码有什么问题.

c++ aggregate-initialization c++11 list-initialization

19
推荐指数
1
解决办法
518
查看次数