13 //----------------------------------------------------------------------
14 // Define a template class that we can specialize with an enumeration
15 //----------------------------------------------------------------------
22 template <EnumType Arg
> class EnumTemplate
;
24 //----------------------------------------------------------------------
25 // Specialization for use when "Arg" is "EnumType::Member"
26 //----------------------------------------------------------------------
28 class EnumTemplate
<EnumType::Member
>
45 //----------------------------------------------------------------------
46 // Specialization for use when "Arg" is "EnumType::Subclass"
47 //----------------------------------------------------------------------
49 class EnumTemplate
<EnumType::Subclass
> :
50 public EnumTemplate
<EnumType::Member
>
53 EnumTemplate(int m
) : EnumTemplate
<EnumType::Member
>(m
)
58 template <typename FLOAT
> struct T1
{ FLOAT f
= 1.5; };
59 template <typename FLOAT
> struct T2
{ FLOAT f
= 2.5; int i
= 42; };
60 template <typename FLOAT
, template <typename
> class ...Args
> class C
{ std::tuple
<Args
<FLOAT
>...> V
; };
62 int main(int argc
, char **argv
)
66 EnumTemplate
<EnumType::Member
> member(123);
67 EnumTemplate
<EnumType::Subclass
> subclass(123*2);
70 return testpos
.getArg() - testneg
.getArg() + member
.getMember()*2 - subclass
.getMember(); // Breakpoint 1