int& 定义的变量的类型却是 int
听几个高人讨论,写这个程序:
template <typename T, typename C>
struct CompilerTypeCheck
{
};
template <typename T>
struct CompilerTypeCheck<T, T>
{
typedef T value_type;
};
template <typename T, typename C>
void
VarTypeCheckFunction (C c)
{
typename CompilerTypeCheck<T, C>::value_type t = c;
}
template <typename T>
struct CheckType
{
template <typename C>
CheckType (C c)
{
T t = c;
VarTypeCheckFunction<T>(t);
}
};
int
main ()
{
CheckType<int> i(0);
CheckType<int&> r(0); // 编译错误
}