kam*_*iro 2 c++ templates metaprogramming
所以我一直在寻找检查具有特定参数的函数是否存在的方法.我有一个模板化的方法,它依赖于一个外部函数(来自类的外部)来完成这项工作:
template <class Moo>
void exportDataTo(Moo& ret){
extended_solid_loader(ret, *this);
}
Run Code Online (Sandbox Code Playgroud)
在项目的多个点我有宏为不同类型定义extended_solid_loader,但现在我希望能够使用默认函数,如果没有为该特定类类型定义extended_solid_loader.
我遇到过这样的问题: 是否可以编写模板来检查函数的存在? 但它似乎有点不同,因为我没有检查方法,而是检查具有特定参数类型的函数.
这可能吗?
您可以只提供一个函数模板来extended_solid_loader提供默认实现,而想要使用默认实现以外的其他用户的用户只需要这样做.
template<class T>
void extended_solid_loader(T & ret, SomeClass & obj) {
// default implementation here
}
template<>
void extended_solid_loader<MooClass>(MooClass & ret, SomeClass & obj) {
// special implementation for MooClass here
}
Run Code Online (Sandbox Code Playgroud)