模板定义中的条件
Condition in Template Definition
我想根据给定类型的 属性 更改模板函数的 return 类型。有没有可能做这样的事情,也许有部分专业化(一个用于酷 T,一个用于不酷 T)?
template<typename T, typename ret = T::IsCool ? int : float>
inline ret get() {}
(总能保证,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() {}
C++14
template<typename T, typename ret = std::conditional_t<T::IsCool, int, float>>
inline ret get() {}
我想根据给定类型的 属性 更改模板函数的 return 类型。有没有可能做这样的事情,也许有部分专业化(一个用于酷 T,一个用于不酷 T)?
template<typename T, typename ret = T::IsCool ? int : float>
inline ret get() {}
(总能保证,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() {}
C++14
template<typename T, typename ret = std::conditional_t<T::IsCool, int, float>>
inline ret get() {}