C++ boost make_共享的参数限制

C++ boost make_共享的参数限制,c++,boost,shared-ptr,C++,Boost,Shared Ptr,下面的代码编译时没有问题。在这个场景中,我将发送9个参数以使_共享 #include <boost/shared_ptr.hpp> #include <boost/make_shared.hpp> class Controller { int a1,a2,a3,a4,a5,a6,a7,a8,a9; static void createInstance(int a1, int a2,

下面的代码编译时没有问题。在这个场景中,我将发送9个参数以使_共享

#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
class Controller
{
  int a1,a2,a3,a4,a5,a6,a7,a8,a9;

  static void createInstance(int a1,
                             int a2,
                             int a3,
                             int a4,
                             int a5,
                             int a6,
                             int a7,
                             int a8,
                             int a9)
  {
    Controller::controller = boost::make_shared<Controller>(a1,a2,a3,a4,a5,a6,a7,a8,a9);
  }

  private:

  Controller(int a1,
             int a2,
             int a3,
             int a4,
             int a5,
             int a6,
             int a7,
             int a8,
             int a9) { }
  static boost::shared_ptr<Controller> controller;
};

int main()
{
  Controller::createInstance(1,2,3,4,5,6,7,8,9);
}
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
class Controller
{
  int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;

  static void createInstance(int a1,
                             int a2,
                             int a3,
                             int a4,
                             int a5,
                             int a6,
                             int a7,
                             int a8,
                             int a9,
                             int a10)
  {
    Controller::controller = boost::make_shared<Controller>(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);
  }

  private:

  Controller(int a1,
             int a2,
             int a3,
             int a4,
             int a5,
             int a6,
             int a7,
             int a8,
             int a9,
             int a10) { }
  static boost::shared_ptr<Controller> controller;
};

int main()
{
  Controller::createInstance(1,2,3,4,5,6,7,8,9,10);
}

为什么make_shared有9个参数的任意限制?如何获取9个以上的参数?

您的编译器和/或库似乎不支持可变模板

如果您希望此语法正常工作,您可能需要升级到支持可变模板的编译器,并使用stl函数检查,同时“如果您有一个包含10个参数的过程,您可能会错过一些。”
In static member function ‘static void Controller::createInstance(int, int, int, int, int, int, int, int, int, int)’:  
error: no matching function for call to  ‘make_shared(int,int,int,int,int,int,int,int,int,int)’