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