12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- template<typename T, typename P>
- struct TwoOptionTemplate {};
- template<typename T>
- struct TwoOptionTemplate<T, char> {
- int member;
- };
- template<typename T>
- struct TwoOptionTemplate<T, double> {
- float member;
- };
- template<typename T>
- struct TwoOptionTemplate<T, T> {
- T** member;
- };
- TwoOptionTemplate<int, char> X0;
- TwoOptionTemplate<int, double> X1;
- TwoOptionTemplate<void *, wchar_t> X2;
- TwoOptionTemplate<long, long> X3;
- TwoOptionTemplate<int, int> X4;
- TwoOptionTemplate<long, long> SingleDest;
- TwoOptionTemplate<int, double> SecondDoubleDest;
- template<int I, class C>
- struct IntTemplateSpec {};
- template<class C>
- struct IntTemplateSpec<4, C> {
- C member;
- };
- template<int I>
- struct IntTemplateSpec<I, void *> {
- double member;
- static constexpr int val = I;
- };
- template<int I>
- struct IntTemplateSpec<I, double> {
- char member;
- static constexpr int val = I;
- };
- IntTemplateSpec<4, wchar_t>Y0;
- IntTemplateSpec<5, void *> Y1;
- IntTemplateSpec<1, int> Y2;
- IntTemplateSpec<2, int> Y3;
- IntTemplateSpec<43, double> NumberDest;
- namespace One {
- namespace Two {
- namespace Three {
- template<class T>
- class Parent {};
- } // namespace Three
- } // namespace Two
- template<typename T, typename X>
- struct Child1: public Two::Three::Parent<unsigned> {
- char member;
- };
- template<class T>
- struct Child1<T, One::Two::Three::Parent<T>> {
- T member;
- };
- } // namespace One
- namespace Dst { One::Child1<double, One::Two::Three::Parent<double>> Z0Dst; }
- One::Child1<int, float> Z1;
|