[C++11 模板的改进]
Posted Overboom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[C++11 模板的改进]相关的知识,希望对你有一定的参考价值。
1 右尖括号改进
看一段示例代码:
#include <iostream>
using namespace std;
template<int i> class X ;
template<class T> class Y ;
int main()
Y<X<10>> obj1; //C++11之前,2个右尖括号之间必须有空格
return 0;
2 函数模板的默认模板参数
C++11之前,类模板支持默认模板参数,但是不支持函数模板的默认模板参数。
// 1. 普通函数带默认参数,c++98编译通过, c++11编译通过
viod xxfun(int num = 3)
// 2. 类模板支持默认模板参数,c++98编译通过, c++11编译通过
template <template T = int>
class XXXClass;
// 3. 函数模板的默认模板参数,c++98编译失败, c++11编译通过
template<template T = int>
void XXXfunc() ;
类模板的默认模板参数必须是从右往左定义,函数模板的默认模板参数则没有这个限定:
template<class T1, class T2 = int>
class XXXclass;
template<class T1 = int, class T2>
class XXXclass; //无法通过编译
template<class T1 = int, class T2>
void XXXfunc(T1 a, T2 b);
template<int i = 0, class T>
void XXXfunc(T, a);
以上是关于[C++11 模板的改进]的主要内容,如果未能解决你的问题,请参考以下文章