2
我想获得对象的值(标题是这样一个扰流板)。从对象中获取值
该对象可能是指针或不是。我正在寻找一个STL功能,这将是“反转对口”的std::decay
我到目前为止是这样的:
template<typename T>
typename std::enable_if<std::is_pointer<T>::value,
typename std::add_reference<typename std::remove_pointer<T>::type>::type>::type
deref(T val)
{ return *val; } // lets call it the * policy
template<typename T>
typename std::enable_if<!std::is_pointer<T>::value,
typename std::add_reference<T>::type>::type
deref(T& val)
{ return val; } // lets call it the plain policy
Ofcourse这些内部类模板,其中T
是一个参数使用。我故意避免使用decltype
和朋友有事情可实现在C++ 03 :(
是否还有更好的,更consise方式? 请问这个解决方案“规模”到C++ 11 &&
?的
对于C++ 03,添加一个'T const&'重载。 – dyp 2014-09-30 14:57:41
它在没有const超载的情况下工作,重载参考将会推断'T'为'const'类型 – 2014-09-30 15:01:41
这很有帮助。我的印象是,如果'T'是'U&'类型(引用类型),这会产生问题。我也尝试过类似的东西,这就是为什么我结束了所有'remove_ref'的东西。 – 2014-09-30 15:02:05