| 1 | #include <iostream>
 | 
|---|
| 2 | #include <cstdlib>
 | 
|---|
| 3 | #include <variant>
 | 
|---|
| 4 | using namespace std;
 | 
|---|
| 5 | 
 | 
|---|
| 6 | // struct S { char s[32]; };
 | 
|---|
| 7 | // variant< int, double, S > vd;
 | 
|---|
| 8 | // variant< int, int, int > vs;
 | 
|---|
| 9 | 
 | 
|---|
| 10 | // int main() {
 | 
|---|
| 11 | //      cout << "sizeof vd " << sizeof( vd ) << endl;
 | 
|---|
| 12 | //      vd = 3;
 | 
|---|
| 13 | //      if ( holds_alternative<int>(vd) ) cout << "int " << get<int>(vd ) << endl;
 | 
|---|
| 14 | //      vd = 3.5;
 | 
|---|
| 15 | //      if ( holds_alternative<double>(vd) ) cout << "double " << get<double>(vd) << endl;
 | 
|---|
| 16 | //      vd = (S){ "abc" };
 | 
|---|
| 17 | //      if ( holds_alternative<S>(vd) ) cout << "S.s " << get<S>(vd).s << endl;
 | 
|---|
| 18 | 
 | 
|---|
| 19 | //      cout << "sizeof vs " << sizeof( vs ) << endl;
 | 
|---|
| 20 | //      vs = (variant<int,int,int>){ in_place_index<0>, 12 };
 | 
|---|
| 21 | //      if ( vs.index() == 0 ) cout << "posn 0 " << get<0>(vs) << endl;
 | 
|---|
| 22 | //      vs = (variant<int,int,int>){ in_place_index<1>, 4 };
 | 
|---|
| 23 | //      if ( vs.index() == 1 ) cout << "posn 1 " << get<1>(vs) << endl;
 | 
|---|
| 24 | //      vs = (variant<int,int,int>){ in_place_index<2>, 5 };
 | 
|---|
| 25 | //      if ( vs.index() == 2 ) cout << "posn 2 " << get<2>(vs) << endl;
 | 
|---|
| 26 | // }
 | 
|---|
| 27 | 
 | 
|---|
| 28 | constexpr auto one = 0 + 1;
 | 
|---|
| 29 | const auto NUL = nullptr;
 | 
|---|
| 30 | const auto PI = 3.14159;
 | 
|---|
| 31 | const auto Plus = '+';
 | 
|---|
| 32 | const auto Fred = "Fred";
 | 
|---|
| 33 | const auto Mon = 0, Tue = Mon + 1, Wed = Tue + 1, Thu = Wed + 1, Fri = Thu + 1, Sat = Fri + 1, Sun = Sat + 1;
 | 
|---|
| 34 | const auto r = random();
 | 
|---|
| 35 | 
 | 
|---|
| 36 | enum E { A, B, C };
 | 
|---|
| 37 | enum class EC : long { A, B, C };
 | 
|---|
| 38 | 
 | 
|---|
| 39 | int a1[Sun + 1], a2[C + 1];
 | 
|---|
| 40 | 
 | 
|---|
| 41 | int main() {
 | 
|---|
| 42 |         const auto one = random();
 | 
|---|
| 43 | //      const int * ip = &one;
 | 
|---|
| 44 |         int sa[Sun];
 | 
|---|
| 45 |         int * i = NUL;
 | 
|---|
| 46 |         E e;
 | 
|---|
| 47 |         // switch ( e ) {
 | 
|---|
| 48 |         //   case w: ;
 | 
|---|
| 49 |         // }
 | 
|---|
| 50 |         switch ( e ) {
 | 
|---|
| 51 |           case Sat: ;
 | 
|---|
| 52 |         }
 | 
|---|
| 53 |         switch ( e ) {
 | 
|---|
| 54 |           case C: ;
 | 
|---|
| 55 |         }
 | 
|---|
| 56 |         EC ec;
 | 
|---|
| 57 |         switch ( ec ) {
 | 
|---|
| 58 |           case EC::A: ;
 | 
|---|
| 59 |         }
 | 
|---|
| 60 |         EC eca[C];
 | 
|---|
| 61 |         eca[A] = EC::A;
 | 
|---|
| 62 | 
 | 
|---|
| 63 |         enum Week { Mon, Tue, Wed, Thu = 10, Fri, Sat = 8, Sun };
 | 
|---|
| 64 |         if ( Fri < Sat ) cout << "hmm" << endl;
 | 
|---|
| 65 |         else cout << "ahh" << std::endl;
 | 
|---|
| 66 |         Week day = Mon;
 | 
|---|
| 67 |         if ( day <= Fri ) cout << "weekday" << endl;
 | 
|---|
| 68 |         switch ( day ) {
 | 
|---|
| 69 |           case Mon: case Tue: case Wed: case Thu: case Fri:
 | 
|---|
| 70 |                 cout << "weekday" << endl; break;
 | 
|---|
| 71 |           case Sat: case Sun:
 | 
|---|
| 72 |                 cout << "weekend" << endl; break;
 | 
|---|
| 73 |         }
 | 
|---|
| 74 |         for ( Week d = Mon; d <= Sun; d = (Week)(d + 1) ) {
 | 
|---|
| 75 |                 cout << d << ' ';
 | 
|---|
| 76 |         }
 | 
|---|
| 77 |         cout << endl;
 | 
|---|
| 78 | }
 | 
|---|
| 79 | 
 | 
|---|
| 80 | // Local Variables: //
 | 
|---|
| 81 | // compile-command: "g++ -std=c++17 test.cc" //
 | 
|---|
| 82 | // End: //
 | 
|---|