1 enum class Type : int {
2 Undefined = 0,
3 Item1 = 1,
4 Item2 = 2,
5 Item3 = 3
6 };
7
8
9 template <Type type = Type::Item3>
10 class XDevice;
11
12 template <>
13 class XDevice<Type::Item1> {
14 public:
15 XDevice() = default;
16 ~XDevice() = default;
17 void method1() {};
18 };
19
20 template <>
21 class XDevice<Type::Item2> {
22 public:
23 XDevice() = default;
24 ~XDevice() = default;
25 void method2() {};
26 };
27
28 template <>
29 class XDevice<Type::Item3> {
30 public:
31 XDevice() = default;
32 ~XDevice() = default;
33 void method3() {};
34 };