#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_shared与std::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)