#include <iostream>
template <typename T, typename U>
struct is_same{
const static bool value = false;
};
template <typename T>
struct is_same<T, T>{
const static bool value = true;
};
template<typename T, typename U>
bool same(T, U){
return is_same<T, U>::value;
}
int main(){
const int x = 0;
int y;
std::cout << is_same<const int, int>::value << '\n'; // false
std::cout << same(x, y) << '\n'; // true
}
如果类型 x 是 const int 并且 y 是 int,为什么同样会返回 true?应该怎么做才能像 is_same 一样返回 false?