3
我想根据给定类型的属性更改模板函数的返回类型。有没有可能做这样的事情,也许是部分专业化(一个用于酷T,一个用于非酷派)?模板定义中的条件
template<typename T, typename ret = T::IsCool ? int : float>
inline ret get() {}
(它总是有保证的,那T具有bool
财产IsCool
)
我想根据给定类型的属性更改模板函数的返回类型。有没有可能做这样的事情,也许是部分专业化(一个用于酷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() {}
HTTP://en.cppreference。 com/w/cpp/types/conditional – nwp
@nwp你知道你应该把答案放在下面的答案框中,对吧? – Rakete1111
@ Rakete1111我的印象是,只有链接的答案不是答案,但可以随意添加一些文本,并使其成为一体。 – nwp