#include <cstdio>
#include <iostream>
using namespace std;
struct A {
A() {}
A(const A& a) { cout << "COPY Constructed " << __FUNCTION__ << endl; }
A(A&& a) { cout << "Move Constructed " << __FUNCTION__ << endl; }
};
struct B {
B() {}
B(const B& b) { cout << "COPY Constructed " << __FUNCTION__ << endl; }
B(B&& b) { cout << "Move Constructed " << __FUNCTION__ << endl; }
};
template<typename... T> struct MultiTypes;
template<typename T1,typename... T>
struct MultiTypes<T1, T...> :public MultiTypes<T...> {
T1 t1;
MultiTypes<T1, T...>(T1 a,T... b):
t1(a), MultiTypes<T...>(b...) {
cout << "MultiTypes<T1,T...>(T1 a,T... b)" << endl;
}
};
template<> struct MultiTypes<> {
MultiTypes<>() { cout << "MultiTypes<>()" << endl; }
};
template<template<typename...>class VariadicType, typename... Args> VariadicType<Args...> Build(Args&&... args) {
return VariadicType<Args...>(std::forward < Args>(args)...);
}
int main()
{
A a;
B b;
Build<MultiTypes>(a, b);
return 0;
}
变长模板实现完美转发
最新推荐文章于 2024-07-24 19:05:43 发布
本文探讨了C++中模板类MultiTypes的构造函数优化,通过泛型实现不同类型的组合,并展示了如何通过Build函数构建。重点在于结构A和B的复制与移动构造函数演示以及MultiTypes模板的使用场景。
摘要由CSDN通过智能技术生成