c++ - std::enable_if ... else aka typename_if_else
问题描述
类似于std::enable_if
我想要一个else
类型信息(我需要这个用于依赖可变参数模板static_cast
)。我从标准扩展了可能的实现,如下所示:
template<bool B, class T = void, class F = void>
struct typename_if_else
{};
template<class T, class F>
struct typename_if_else<true, T, F>
{
typedef T type;
};
template<class T, class F>
struct typename_if_else<false, T, F>
{
typedef F type;
};
template< bool B, class T = void >
using typename_if_else_t = typename typename_if_else<B,T>::type;
有没有办法摆脱不再需要的空结构(第一个定义)?
解决方案
您可以为 , 创建部分模板特化false
,并true
设为默认值。
template<bool B, class T = void, class F = void>
struct typename_if_else
{
typedef T type;
};
template<class T, class F>
struct typename_if_else<false, T, F>
{
typedef F type;
};
template< bool B, class T = void >
using typename_if_else_t = typename typename_if_else<B,T>::type;
推荐阅读
- excel - Excel - 条件格式以突出显示单元格值是否等于并且另一个单元格值在日期之前
- python-3.x - 在 python 3 中传递一个字符串变量作为函数参数并在函数中调用它
- coldfusion - 使用 CFWHEELS 在模型中添加自定义方法
- javascript - 如何将媒体从 text/plain 更改为 application/json?
- wso2 - 端点[状态:暂停]
- c# - XML 未正确序列化为对象
- html - 屏幕尺寸过小时文本重叠
- kendo-ui - Kendo Window - 使用自定义更新
- react-native - store.dispatch 不是一个函数 - 将原生 redux-persist 与 redux-thunk middlware 反应
- php - 添加 if user is guest/customer 语句到 PHP