1 | namespace ns { |
2 | |
3 | template <typename T> struct Foo { |
4 | static T value; |
5 | }; |
6 | |
7 | template <class T> T Foo<T>::value = 0; |
8 | |
9 | template <typename T> using Bar = Foo<T>; |
10 | |
11 | using FooInt = Foo<int>; |
12 | using FooDouble = Foo<double>; |
13 | |
14 | } // namespace ns |
15 | |
16 | ns::Foo<double> a; |
17 | ns::Foo<int> b; |
18 | ns::Bar<double> c; |
19 | ns::Bar<int> d; |
20 | ns::FooInt e; |
21 | ns::FooDouble f; |
22 | |
23 | int main() { |
24 | // Set breakpoint here |
25 | return (int)a.value + b.value + (int)c.value + d.value + e.value + |
26 | (int)f.value; |
27 | } |
28 | |