在 Visual Studio 2010/2011 中没有可变参数模板(仍然!)的情况下,采用大量参数的构造函数可能会出现问题。例如以下将无法编译:
MyMaterials.push_back(std::make_shared<Material>(MyFacade,
name,
ambient,
diffuse,
specular,
emissive,
opacity,
shininess,
shininessStrength,
reflectivity,
bumpScaling,
maps,
mapFlags));
,因为它有 13 个参数,我认为 make_shared 限制在 arg0 到 arg9。显而易见的解决方法是两部分构造,但我希望避免这种情况。除了使用new而不是 make_shared之外,这里还有其他可能性吗?
谢谢。