C++17 özellikleri: sınıf template'e implicit argüman atama

C++17 ile artık tuple ve pair gibi sınıf template’lerine make_xxx fonksiyonlarını çağırmadan doğrudan atama yapabiliriz.

#include <tuple>
#include <string>
 
using std::tuple;
using std::make_tuple;
using std::get;
using std::tie; 

using std::string;

C++11 ile;

// tuple<string, string, int> wantToSee =
//    make_tuple("Tianmen Mountain", "Zhangjiajie, China", 1400);

//veya 'auto' kullanarak:

auto wantToSee =
      make_tuple("Tianmen Mountain", "Zhangjiajie, China", 1400);

Elemanlara ulaşmak için ya teker teker std::get<> fonksiyonun çağırmalı ya da std::tie() fonksiyonuyla bağlamayıydık.

string name = get<0>(wantToSee);
string place = get<1>(wantToSee);
int height = get<2>(wantToSee);

veya

string name{};
string place{};
int height{};

tie(name, place, height) = wantToSee;

C++17 ile ise;

tuple wantToSee("Tianmen Skywalk", "Zhangjiajie, China", 1400);
auto& [name, place, height] = wantToSee;

yapabiliriz. Bu özelliği pair tutucusunda da kullanabiliriz.


C++17

113 Words

2018-08-14 03:00 +0300