// Build don't link: #include template < class T > class X { protected: union { int x; double y; }; }; template < class T > class Y : public X { public: using X::x; void f () { cout << x << endl; } };