C++ workspace type template