相关疑难解决方法(0)

std :: make_shared与std :: initializer_list

#include <iostream>
#include <memory>

class Base
{
public:
    Base() {}
};

class Derived : public Base
{
public:
    Derived() {}
    Derived(std::initializer_list<std::pair<int, std::shared_ptr<Base>>>) {}
};

int main(int argc, char ** argv)
{
    auto example = new Derived({
        { 0, std::make_shared<Derived>() }
    });

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它的工作原理(实时预览)正常,但是当我尝试使用std::make_sharedstd::initializer_list作为参数,我得到了错误:

auto example = new Derived({
    { 0, std::make_shared<Derived>({
        { 0, std::make_shared<Derived>() }
    }) }
});
Run Code Online (Sandbox Code Playgroud)

正如您在实时预览中看到的那样.

错误:功能参数太多......

它仅适用于我这样做(实时预览):

auto example = new Derived({
    { 0, …
Run Code Online (Sandbox Code Playgroud)

c++ std c++11

17
推荐指数
2
解决办法
4449
查看次数

标签 统计

c++ ×1

c++11 ×1

std ×1