C++11 template and Perfect forwarding instance code
#include <memory>
#include <iostream>
#include <vector>
#include <stdarg.h>
using namespace Std;
struct A
{
A ()
{
}
A (const a& a)
{
cout << "Copy constructed" << __func__ << Endl;
}
A (a&& a)
{
cout << "Move constructed" << __func__ << Endl;
}
};
struct B
{
B ()
{
}
B (const b& B)
{
cout << "Copy constructed" << __func__ << Endl;
}
B (b&& b)
{
cout << "Move constructed" << __func__ << Endl;
}
};
Variable length template definition
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;
}
};
Perfect Hair-filling
Template<template<typename ... >class variadictype,typename ... Args>
Variadictype<args...> Build (args&& .... Args)
{
Return variadictype<args...> (std::forward<args> (Args) ...);
}
int main ()
{
A;
b b;
Build<multitypes> (A, b);
return 0;
}
C++11 template and Perfect forwarding instance code