C++17 Özellikleri: std::any

any yalnızca bir adet veri saklayan bir tutucu. Boost.Any baz alınarak geliştirildi. Standard kütüphanede <any> başlığında tanımlandı ve std::any isim uzayını kullanıyor. Sadece bir adet veri tutan yapılar daha önce void* veya templateler ile gerçekleniyordu. Şimdi ifade etme gücü daha yüksek, anlaşılır ve type-safe bir yapımız var :)

#include <any>

using std::any;
using std::any_cast;
any val;

val = 10; // val int tipi saklıyor

val.reset(); // resetlendi 
val = 10.0; // double tutuyor
struct Gadgets { std::string phone{}; } firstPhone{"Nokia 8890"}; 

if (any val = firstPhone;  val.has_value()) // any bir değer saklıyor mu?
	auto i = any_cast<std::string>(firstPhone.phone); // any_cast, any'de tutulan değere
							     // erişmek için

C++17

105 Words

2018-07-24 03:00 +0300