// 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 () { std::cout << x << std::endl; } };