在 Visual Studio 2010/2011 中依然没有可变参数模板(variadic templates),这就导致了一个接受大量参数的构造函数可能会存在问题。例如,下面的代码将无法通过编译:
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,还有其他可能吗?
谢谢。