|
|
@@ -10,45 +10,45 @@
|
|
|
#include <iostream>
|
|
|
|
|
|
struct test{
|
|
|
- int * holder;
|
|
|
- test() {
|
|
|
- std::cout << "test()" << std::endl;
|
|
|
- holder = new int();
|
|
|
- }
|
|
|
-
|
|
|
- test(test&& old) : holder(nullptr) {
|
|
|
- std::cout << "test(test&&)" << std::endl;
|
|
|
- std::swap(holder,old.holder);
|
|
|
- }
|
|
|
- test(const test& old) {
|
|
|
- std::cout << "test(const test&)" << std::endl;
|
|
|
- holder = new int(*old.holder);
|
|
|
- }
|
|
|
- ~test()
|
|
|
- {
|
|
|
- std::cout << "~test()" << std::endl;
|
|
|
- delete holder;
|
|
|
- }
|
|
|
+ int * holder;
|
|
|
+ test() {
|
|
|
+ std::cout << "test()" << std::endl;
|
|
|
+ holder = new int();
|
|
|
+ }
|
|
|
+
|
|
|
+ test(test&& old) : holder(nullptr) {
|
|
|
+ std::cout << "test(test&&)" << std::endl;
|
|
|
+ std::swap(holder,old.holder);
|
|
|
+ }
|
|
|
+ test(const test& old) {
|
|
|
+ std::cout << "test(const test&)" << std::endl;
|
|
|
+ holder = new int(*old.holder);
|
|
|
+ }
|
|
|
+ ~test()
|
|
|
+ {
|
|
|
+ std::cout << "~test()" << std::endl;
|
|
|
+ delete holder;
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
- using my_var = variant<std::string, test>;
|
|
|
-
|
|
|
- my_var d;
|
|
|
-
|
|
|
- d.set<std::string>("First string");
|
|
|
- std::cout << d.get<std::string>() << std::endl;
|
|
|
-
|
|
|
- d.set<test>();
|
|
|
- *d.get<test>().holder = 42;
|
|
|
-
|
|
|
- my_var e(std::move(d));
|
|
|
- std::cout << *e.get<test>().holder << std::endl;
|
|
|
-
|
|
|
- *e.get<test>().holder = 43;
|
|
|
-
|
|
|
- d = e;
|
|
|
-
|
|
|
- std::cout << *d.get<test>().holder << std::endl;
|
|
|
+ using my_var = variant<std::string, test>;
|
|
|
+
|
|
|
+ my_var d{};
|
|
|
+
|
|
|
+ d.set<std::string>("First string");
|
|
|
+ std::cout << d.get<std::string>() << std::endl;
|
|
|
+
|
|
|
+ d.set<test>();
|
|
|
+ *d.get<test>().holder = 42;
|
|
|
+
|
|
|
+ my_var e(std::move(d));
|
|
|
+ std::cout << *e.get<test>().holder << std::endl;
|
|
|
+
|
|
|
+ *e.get<test>().holder = 43;
|
|
|
+
|
|
|
+ d = e;
|
|
|
+
|
|
|
+ std::cout << *d.get<test>().holder << std::endl;
|
|
|
}
|