웹 서핑 중 C++11의 기능 중 Visual Studio 2013에도 추가된 'Non-static data member initializers, Variadic templates, Initializer lists, Alias templates' 기능을 맛 볼 수 있는 코드를 보아서 소개한다.

 

테스트는 간단하게 웹 컴파일러를 이용했다.

웹 컴파일러: http://melpon.org/wandbox/

 

코드(출처: http://d.hatena.ne.jp/osyo-manga/20131027/1382882447 )

#include <iostream>

#include <vector>

#include <string>

 

// Variadic templates

template<typename... Args>

void func(Args... args)

{

// Initializer lists

for(auto&& n : { args... })

{

std::cout << n << std::endl;

}

}

 

template<typename T>

struct X

{

T value;

X(int n) : value(n){}

};

 

struct person

{

// Non-static data member initializers

int age = 13;

std::string name = "homu";

};

 

 

// Aliases templates

template<typename T>

using my_vector = std::vector<X<T>>;

 

int main()

{

std::cout << "Aliases templates, Initializer lists" << std::endl;

my_vector<int> v = { X<int>{1}, X<int>{2}, X<int>{3}};

 

for(auto&& n : v)

{

std::cout << n.value << std::endl;

}

std::cout << std::endl;

 

 

std::cout << "Variadic templates" << std::endl;

func(1.1, 2.2, 3.3, 4.4, 5.5);

std::cout << std::endl;

 

 

std::cout << "Non-static data member initializers" << std::endl;

person homu;

std::cout << homu.name << std::endl;

std::cout << homu.age << std::endl;

 

return 0;

}

< 결과 >

 

위 코드는 Visual Studio 2013에서도 잘 돌아가며 VS 2013에서는 C++11 기능 중 아래의 것이 새롭게 구현 되었다.

Non-static data member initializers

Variadic templates

Initializer lists

Default template arguments for function templates

Alias templates

Delegating constructors

Explicit conversion operators

Raw string literals

Defaulted and deleted functions

 

더 자세한 정보는 http://msdn.microsoft.com/en-us/library/vstudio/hh567368.aspx 를 참고.

 

 

신고
by 흥배 2014.02.17 08:00
| 1 |

티스토리 툴바