是否有办法使用ClassTmplt/DerivedFloat::InternalType
类对象指针将模板类实例类型别名(DoSomething
)传递给外部非成员模板函数(Base
)(如最后两个{ {1}}函数注释行?)
test()
答案 0 :(得分:2)
没有。考虑:
void f(Base* ptr) {
// What type does ptr point to?
// The runtime derived type might not exist when this function compiles
}
由于指针的动态类型仅在运行时知道,因此编译器在编译函数时无法访问它。
如果定义可用,可能会有更多选项,但所有这些选项都要求您事先知道要支持的整个类型集,并且可能需要向下转发。 (如果你走这条路线,那么“id”类型可能会有所帮助。)
您可以使用访客模式构建一些有限的工作设计。