msvc does not support default template arguments for functions