我有一个具有可变成员函数的类:
class class_name {
template<ArgTypes.. args>
some_return_type memberMethod(ArgTypes... args) {
//stuff...
}
}
我需要在类定义块中强制实例化此方法。我在类定义块之外松开了方法名称,因为该类是由一堆宏生成的。
我尝试通过将指针复制到专门的成员函数(伪代码)来强制实例化:
template<typename Self, typename RetType, typename... ArgTypes>
struct force_instantation_imlp<Self, RetType, type_placeholder, type_placeholder<ArgTypes...>> {
force_instantation_imlp() {
using instate = RetType (Self::*)(ArgTypes...);
instate force = &Self::memberMethod<ArgTypes...>;
}
};
class class_name {
template<ArgTypes.. args>
some_return_type memberMethod(ArgTypes... args) {
//stuff...
}
force_instantation_imlp<class_name, some_return_type, rest_of_types_deduced_from_context> force_virtual_instantation;
}
type_placeholder
只是“冻结”参数包的帮助模板。
不幸的是,这给了我一个编译错误
error: expected primary-expression before ‘...’ token instate force = &Self::memberMethod<ArgTypes...>;
我猜这个错误是由于成员函数是可变参数模板这一事实造成的。
有没有办法在类定义块中强制可变参数模板成员函数实例化?