C++14 - 람다식의 인수에 가변 길이 인수 사용하는 예제
#include <iostream>
using namespace std;
void print (){
cout << endl;
}
template <typename T,typename ...Types>
void print (T head, Types... tail) {
cout << head << endl;
print(tail...);
}
void test06() {
// auto 타입으로 가인수를 설정
auto add = [](auto x){return x + x;};
// 「8」
cout << add(4) << endl;
// 「6.4」
cout << add(3.2) << endl;
// 「abcabc」
cout << add(std::string("abc")) << endl;
//가변 길이 인수도 가능
//가변 길이 인수는 C++11의 가변 길이 템플릿이 사용된다
auto cat = [](auto head,auto...tail) {
//파라메터 팩을 재귀적으로 전개
print(head,tail...);
};
// 「1」
// 「3」
// 「4」
// 「nya」
// 「2.12」
// 「nya-」
cat(1,3,4,"nya",2.12,"nya-");
// 파라메터 팩을 전개
auto cat02 = [](auto ... nya) {
for (auto nya_ : {nya...}) {
cout << nya_;
}
};
// 「nyanyannya-」
cat02("nya","nyan","nya-");
}
이 글은 2019-11-06에 작성되었습니다.