template<typename... args>
void Func(args... arg){
std::list<std::shared_ptr<void*>> a_;
(a_.emplace_back(
new args(std::move(arg))
)...);
}
这段代码为啥在MSVC下编译,提示“内部编译错误”
template<typename... args>
void Func(args... arg){
std::list<std::shared_ptr<void*>> a_;
(a_.emplace_back(
new args(std::move(arg))
)...);
}
这段代码为啥在MSVC下编译,提示“内部编译错误”
问题找到了
是因为对于参数arg的展开(而不是模板参数),必须需要运算符的连接
于是,我把代码改成:
template<typename... args>
void Func(args... arg){
std::list<std::shared_ptr<void*>> a_;
(a_.emplace_back(
new args(std::move(arg))
)
, //添加逗号运算符
...);
}
问题圆满解决。。。
关键时候还得看我自己。。。