简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:理解C++函数模板高级用法。
2.应用实例
#include <iostream>
#include <string>
#include <memory>
class BpType {
public:
using _hidl_tag = int;
using Pure = int;
};
class IType {
public:
using _hidl_tag = int;
};
// 定义函数模板test
template <typename BpType, typename IType = typename BpType::Pure,
typename = std::enable_if_t<std::is_same<int, typename IType::_hidl_tag>::value>,
typename = std::enable_if_t<std::is_same<int, typename BpType::_hidl_tag>::value>>
std::shared_ptr<IType> test(const std::string& instance, bool retry, bool getStub) {
std::cout << "test() called with instance: " << instance << std::endl;
return std::make_shared<IType>();
}
int main() {
std::string instance = "12345";
bool retry = true;
bool getStub = false;
// 调用test函数模板
auto service = test<BpType, IType>(instance, retry, getStub);
return 0;
}
2.总结
typename IType = typename BpType::Pure的意思是定义了一个模板类型IType,
它的默认值是BpType的内部类型Pure。这个代码片段是在C++中定义一个函数模板test时使用的.