VS2012编译器崩溃与Variadic模板

时间:2013-08-02 09:55:23

标签: c++ visual-studio-2012 c++11 variadic-templates

我第一次尝试使用可变参数模板(使用VS2012 + Nov.CTP)并遇到编译器崩溃的问题。这是一个最小的例子:

class Foo
{
public:
    Foo(int someVar) { }
    Foo(int someVar, float someOtherVar) { }
};

template<typename ... FooArguments>
Foo* createFoo(FooArguments ... fooArguments)
{
    return new Foo(1337, fooArguments ...);
}

int main()
{
    delete createFoo(1338.0f); // Works

    delete createFoo(); // Crashes compiler: error MSB6006: "CL.exe" exited with code -2147483645.
}

我要做的是拥有不同的Foo类,它们都具有相同的基类和构造函数的相同的第一个参数(此处为int someVar)。此外,它们可能具有构造函数重载,这会添加其他参数(此处为float someOtherVar)。它们都应该可以构造为createFoo传递no或任意数量的参数。

我还尝试了不同的apporaches,例如使createFoo的重载不带参数,但这显然导致了一个模糊的调用。

为什么编译器会崩溃?什么是正确的方法呢?

0 个答案:

没有答案