Ok here's an initial implementation (I've had to put the initializer first, otherwise I can't use variadic arguments): http://www.ideone.com/2rqFb I've borrowed BaseElementType from Philippe Sigaud's template book.