| 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 | |