Ada*_*eld 20
不,您无法在运行时切换模板参数,因为模板在编译时由编译器实例化.你可以做的是让两个模板派生自一个公共基类,总是在你的代码中使用基类,然后决定在运行时使用哪个派生类:
class Base
{
...
};
template <typename T>
class Foo : public Base
{
...
};
Base *newBase()
{
if(some condition)
return new Foo<float>();
else
return new Foo<double>();
}
Run Code Online (Sandbox Code Playgroud)
宏与模板具有相同的问题,因为它们在编译时扩展.