-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenum_namespace.cpp
More file actions
87 lines (70 loc) · 1.76 KB
/
enum_namespace.cpp
File metadata and controls
87 lines (70 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/**
* @file enum_namespace.cpp
* misc demo of cpp-fstring
*
* @ingroup examples
*
* @author Sandeep M
* @copyright Copyright 2023 Sandeep M<[email protected]>
* @license MIT License
*/
#include <iostream>
#include <map>
#include "fstr.h"
#include "utils.h"
using namespace std::string_literals;
enum class cdir { left, right };
enum dir { left, right };
namespace {
enum class ecdir { left, right };
enum edir { eleft, eright };
} // namespace
struct Xstruct {
public:
enum dir { left, right };
enum class cdir { left, right };
};
class Xclass {
public:
enum dir { left, right };
enum class cdir { left, right };
};
namespace Xnamespace {
enum dir { left, right };
enum class cdir { left, right };
} // namespace Xnamespace
//
// see https://wgml.pl/blog/formatting-user-defined-types-fmt.html
//
namespace roman {
enum class sym { M, D, C, L, X, V, I };
std::map<sym, int> numerals = {
{sym::M, 1000},
{sym::D, 500},
{sym::C, 100},
{sym::L, 50},
{sym::X, 10},
{sym::V, 5},
{sym::I, 1}
};
} // namespace roman
int main()
{
using std::cout;
print_info(__FILE__, __TIMESTAMP__);
cout << R"(
Test enum namespaces
--------------------
{right=} {left=}
{cdir::right=} {cdir::left=}
{eright=} {eleft=}
{ecdir::right=} {ecdir::left=}
{Xstruct::right=} {Xstruct::left=}
{Xstruct::cdir::right=} {Xstruct::cdir::left=}
{Xclass::right=} {Xclass::left=}
{Xclass::cdir::right=} {Xclass::cdir::left=}
{Xnamespace::right=} {Xnamespace::left=}
{Xnamespace::cdir::right=} {Xnamespace::cdir::left=}
std::map<sym, int> {roman::numerals=}
)";
}