小编use*_*124的帖子

c ++ initializer_list和shared_ptr行为

我正在测试vs2013 c ++ initializer_list.

可以编译下面的代码.但是当我运行exe时崩溃了.

#include <memory>
#include <iostream>

class Base {};

class Derived : public Base {};

void DoSomething(std::initializer_list<std::shared_ptr<Base> > list)
{
}

int main()
{
  auto ip = std::make_shared<Derived>();

  std::cout << "use_count=" << ip.use_count() << std::endl;

  DoSomething({ip, std::make_shared<Derived>()}); // ng
  // DoSomething({ip, std::make_shared<Base>()}); // ok
  // DoSomething({std::make_shared<Derived>(), ip}); // ok

  std::cout << "use_count=" << ip.use_count() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

编译.

C:\...>cl.exe /EHsc test.cpp
Microsoft(R) C/C++ Optimizing Compiler Version 18.00.21005.1 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

test.cpp …
Run Code Online (Sandbox Code Playgroud)

c++ initializer-list visual-studio-2013

9
推荐指数
1
解决办法
1671
查看次数

标签 统计

c++ ×1

initializer-list ×1

visual-studio-2013 ×1