C++11&14 新特性 可变参数的模板

1、可变参数的函数模板

#include<iostream>
#include<bitset>

void printFun()
{}

template <typename T, typename... Types>
void printFun(const T& firstArg, const Types&... args)
{
        std::cout << firstArg << std::endl;
        std::cout << sizeof...(args) << std::endl;
        printFun(args...);
}

int main(int argc, char** argv)
{
        printFun(100.100, "hello world", std::bitset<16>(888), 999);
}

运行结果如下

100.1
3
hello world
2
0000001101111000
1
999
0

2、可变参数的函数模板

#include<iostream>
template<typename... Values>
class myTuple;

template<> class myTuple<> {

};

template <typename Head, typename... Tail>
class myTuple<Head, Tail...> : private myTuple<Tail...>
{
        typedef myTuple<Tail...> inherited;
        public:
        myTuple(){};
        myTuple(Head v, Tail... vtail):m_head(v), inherited(vtail...){

        }
        Head head()
        {
                return m_head;
        }
        inherited& tail()
        {
                return *this;
        }
        private:
        Head m_head;
};

int main(int argc, char** argv)
{
        myTuple<int, float, std::string> t(41, 3.14, "hello");
        std::cout << t.head() << std::endl;
        std::cout << t.tail() << std::endl;
}

运行结果

41
3.14

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值