以下案例在 MS Visual Studio 中编译得很好,但在 g++ 4.6 中编译得不好。
编译:
template <typename T>
struct get_type
{ typedef void type_;};
template <>
struct get_type<float>
{ typedef float type_; };
template <>
struct get_type<int>
{ typedef int type_; };
template <typename T, typename P=get_type<T>::type_> // <--- line 16
struct get_destroy_type
{ static inline void exec(P a) {} };
结果是:
../testlibrary/testlibrary.h:16:34: error: expected type-specifier
../testlibrary/testlibrary.h:16:34: error: expected ‘>’
我用的时候好像不太喜欢
get_type<T>::type_
作为模板参数默认值。MS Visual Studio (Express 10) 编译得很好。我可以做哪些改变来让 g++ 编译它?