簡體   English   中英

變量'...'周圍的堆棧已損壞

[英]Stack around the variable '…' was corrupted

在調試模式下的MSVC 15.8.5上,我得到了

運行時檢查失敗#2 - 變量'insert_into'周圍的堆棧已損壞。

MSVC中是否有錯誤或者我做了什么壞事?

在clang版本6.0.0-1ubuntu2和clang版本7.0.0-svn341916-1~exp1~201.80911115939.26上運行正常

#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;
}

MSVC bug所以它是編譯器中的一個缺陷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM