我目前有类似的东西:
template<typename T>
typename std::enable_if<!std::is_pointer<T>::value,void>::type
f( T const &t ) {
// ...
}
也就是说,我不想f
被考虑是否T
是指针类型。这可以正常工作。但是,现在我想要两个不同的版本,f
基于它的参数是值返回的值还是引用返回的值:
std::string const& ret_by_ref();
std::string ret_by_val();
f( ret_by_ref() ); // I want the existing function to be called here
f( ret_by_val() ); // I want a new template specialization of f() called here
如何增加现有的声明f
并创建一个新的声明,f
以便如上所示调用它们?
赞赏 C++-11 之前的答案。