我为新的模板类型重载了流运算符 <<X<T>
并且可以正常工作。但是,如果我用标识函数包装该类型,identity<X<T>>::type
代码就会中断。
我试过 gcc 4.6.2 / gcc 4.8.1 / clang 3.3
有什么提示吗?
#include <iostream>
template <typename T>
struct ebenso // because I could not find std::identity, any hint?
{
typedef T type;
};
template <typename T>
struct X
{
T value;
};
template<typename T>
inline std::ostream &
operator << (std::ostream& stream, typename ebenso< X<T> >::type const & x)
{
return stream << x.value << std::endl;
}
int main ()
{
X<int> x;
x.value = 7;
std::cout << x << std::endl; // The overload is not found
}