To answer the first part of your question here's an extract from http://gcc.gnu.org/bugs.html#known
"The export keyword is not implemented. Most C++ compilers (G++ included) do not yet implement export, which is necessary for separate compilation of template declarations and definitions. Without export, a template definition must be in scope to be used. The obvious workaround is simply to place all definitions in the header itself. Alternatively, the compilation unit containing template definitions may be included from the header." As for other unimplemented features I'll have to leave that to someone else to answer.