Pau*_*oob 3 c++ templates return-type partial-specialization
我想根据给定类型的属性更改模板函数的返回类型.是否有可能做这样的事情,可能有部分专业化(一个用于酷T,另一个用于非酷)?
template<typename T, typename ret = T::IsCool ? int : float>
inline ret get() {}
Run Code Online (Sandbox Code Playgroud)
(总是保证,T bool有财产IsCool.)
你可以用它std::conditional来实现这一目标.
见http://en.cppreference.com/w/cpp/types/conditional
您可以像这样使用它:
C++ 11
template<typename T, typename ret = std::conditional<T::IsCool, int, float>::type>
inline ret get() {}
Run Code Online (Sandbox Code Playgroud)
C++ 14
template<typename T, typename ret = std::conditional_t<T::IsCool, int, float>>
inline ret get() {}
Run Code Online (Sandbox Code Playgroud)