#include template< size_t sizeValue, typename NumericType> class Base { protected: NumericType n; public: typedef NumericType val_t; Base(val_t t):n(t) { } }; template< size_t sizeValue, typename unusedType > class Derived; template< size_t sizeValue > class Derived : public Base { public: Derived() : Base(1) { } }; int main() { Derived<12, int> d; }