Meh*_*dad 5 c++ templates traits template-meta-programming c++03
如何在C++ 03中获得另一种类型的"解引用类型"?请注意,它可以是其他可解除引用的类型std::vector<int>::iterator.
例如,如果我有
template<typename T>
struct MyPointer
{
T p;
??? operator *() { return *p; }
};
Run Code Online (Sandbox Code Playgroud)
我该如何找出替换的内容????
(没有提升!我想知道如何弄清楚自己.)
fre*_*low 11
template<typename>
struct dereference;
template<typename T>
struct dereference<T*>
{
typedef typename T type;
};
template<typename T>
struct MyPointer
{
T p;
typename dereference<T>::type operator *() { return *p; }
};
Run Code Online (Sandbox Code Playgroud)
在一般情况下,你不能。对于原始指针,您可以部分专业化,如其他答案所示 - 自定义智能指针可能具有结果类型的通用 typedef。但是,您无法编写一个可以处理 C++03 中任何指针的函数。