【发布时间】:2017-11-19 04:00:54
【问题描述】:
谁能帮我解决以下问题?
有一个简单的代码:
#include <vector>
struct A {
std::vector<int> vec;
};
void func (A &&a = {}) {}
int main()
{
func();
return 0;
}
当我尝试通过 gcc 5.4.0 编译它时,我得到了错误:
undefined reference to `std::vector<int, std::allocator<int> >::vector()'
很神奇,但是 clang 编译得很好。 另外,如果稍微修改一下代码,编译时没有任何问题:
#include <vector>
struct A {
std::vector<int> vec;
};
void func (A &&a) {}
int main()
{
func({});
return 0;
}
我真的不明白第一个代码有什么问题。
【问题讨论】:
-
能否提供用于编译的命令行?你在用 g++ 吗?
-
可能与this bug report的原因相同
-
如果将
vector替换为list(或我想的任何其他模板化容器),也会出现同样的问题。 -
@NathanOliver 这确实是答案。请写下来。
-
这实际上不是矢量问题:wandbox.org/permlink/7ZZrMnzOUX6hdOxb
标签: c++ c++11 list-initialization aggregate-initialization