[C++11]函数模板的默认模板参数
Posted Wecccccccc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[C++11]函数模板的默认模板参数相关的知识,希望对你有一定的参考价值。
在C++11中添加了对函数模板默认参数的支持。
代码如下:
#include<iostream>
using namespace std;
template<typename T = long ,typename U = int >
void myTest(T t = 'A',U u = 'B')
{
cout << "t = " << t << " u = " << u << endl;
}
int main()
{
myTest('a', 'b');//自动推导,根据传递的实参
myTest<int>('a', 'b');
myTest<char>('a', 'b');
myTest<int, char>('a', 'b');
myTest<char, int>('a', 'b');
myTest();
return 0;
}
测试结果:
默认的函数参数不能用于类型推导。
代码如下:
#include<iostream>
using namespace std;
template<typename T ,typename U >
void myTest(T t = 'A',U u = 'B')
{
cout << "t = " << t << " u = " << u << endl;
}
int main()
{
myTest();//error
return 0;
}
类模板可以有默认的模板参数。
代码如下:
#include <iostream>
using namespace std;
template<typename T = int ,T t = 520>
class Test
{
public:
void print()
{
cout << "value = " << t << endl;
}
};
int main()
{
Test<> t;//记得写<>
t.print();
return 0;
}
测试结果:
以上是关于[C++11]函数模板的默认模板参数的主要内容,如果未能解决你的问题,请参考以下文章