//Initialization_list
#include <iostream>
#include <string>
using std::initializer_list;
using namespace std;
//含有initializer_list的构造函数
template <typename Type>
class Init{
public:
Init() {}
Init(Type a,Type b)
:m_a(a),m_b(b)
{
cout<<"this is ctor"<<endl;
}
Init(initializer_list<Type> list)
{
cout<<"this is initializer"<<endl;
}
private:
Type m_a,m_b;
};
//没有initializer_list的构造函数
template <typename Type>
class Init1{
public:
Init1() {}
Init1(Type a,Type b)
:m_a(a),m_b(b)
{
cout<<"this is ctor"<<endl;
}
private:
Type m_a,m_b;
};
int main(){
// 在有initializer_list 构造函数情况下,{}传参会调用initlization_list 构造函数
Init<int> a(1,2); //this is ctor
Init<int> b{1,2}; //this is initializer
Init<int> c{1,2,3}; //this is initializer
Init<int> d= {1,2}; //this is initializer
// 在没有initialization_list 构造函数情况下,会调用其他构造函数
Init1<int> e(1,2); //this is ctor
Init1<int> f{1,2}; //this is ctor
Init1<int> g= {1,2}; //this is ctor
return 0;
}