可变参数模板显式特例化
需求是这样的:
- 模板实现包含有可变参数
- 头文件和实现需要分开
头文件和实现分开通常使用的办法是显式特例化
// a.h
#pragma once
template <typename T, typename... Args> void func(T a, int b, Args... args);
实现
a.cc
#include "a.h"
#include <iostream>
using namespace std;
template <typename T, typename... Args> void func(T a, int b, Args... args) {
cout << "a = "
<< " int b = " << b << " others = " << sizeof...(args);
}
template void func<float>(float a, int b);
int main() {
float a = 1.f;
int b = 2;
char c = 'C';
double d = 'C';
func(a, b, c, d);
}