首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在变量“.”周围堆叠腐化

在变量“.”周围堆叠腐化
EN

Stack Overflow用户
提问于 2018-10-16 10:53:09
回答 1查看 441关注 0票数 4

在MSVC 15.8.5中,在调试模式下,我得到了

运行时检查失败#2 -变量'insert_into‘周围的堆栈已损坏。

MSVC中有错误吗?还是我做了什么坏事?

在clang版本6.0.0-1 ubuntu2和clang版本7.0.0- fine 341916-1~exp1~20180911115939.26上运行良好

代码语言:javascript
复制
#include <set>

template <typename... T>
struct Overload : T...
{
//support struct for combining and overloading multiple lambdas
    using T::operator()...;
};
template <typename... T>
Overload(T...)->Overload<T...>;

using BuiltSet = std::set<std::string>;

template <typename... Args>
BuiltSet MakeBuildSet(const Args&... args)
{
//takes a list of arguments if an argument is a 
// BuiltSet each element is added to headers, 
// otherwise the arg itself is added to headers
    BuiltSet headers{};

//Construct a lambda with overloading on if argument is a BuiltSet or not
    const Overload insert_into{
        [](const BuiltSet& h, BuiltSet& headers) {
            headers.insert(h.begin(), h.end());
        },
        [](const auto& arg, BuiltSet& headers) { 
            headers.insert(arg); 
        }
    };
//Fold over arguments applying the lambda on each element
    (insert_into(args, headers), ...);
    return headers;
}

int main(int argc, char** argv)
{
    MakeBuildSet(MakeBuildSet("a", "b", "c"), "a", "b", "c");
    return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-22 11:52:34

因此,这是编译器中的一个缺陷。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52833810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档