Skip to content

Latest commit

 

History

History
26 lines (19 loc) · 2.82 KB

Lecture 10.md

File metadata and controls

26 lines (19 loc) · 2.82 KB


optional

Используется когда хотим хранить что-то, или ничего (специальное значение)

optional<int> a;
a = 5;
a = nullopt;

if(a) // есть ли там что-то

struct foo { foo(int, int, int); }

optional<foo> a(in_place, 1, 2, 3); //Создастся, вызвав конструктор a.emplace(4, 5, 6);

Variant

variant<A, B, C> v;

Хранит один из элементов типа A, B или C (или больше) (конкретнее - типобезопасный union)
По умолчанию имеет значение первого типа.