部分专门化类型特征时,如何使用std :: decay?

乔纳森

我使用这些类型特征来确定类型是否为动态容器,但是最近在对向量的引用未返回true时陷入混乱。

template<typename T>
struct is_dynamic_container
{
    static const bool value = false;
};

template<typename T , typename Alloc>
struct is_dynamic_container<std::vector<T , Alloc>>
{
    static const bool value = true;
};

我想我需要使用std::decay,但是我很难确定是否可以像这样而不是在呼叫站点完成。

template<typename T , typename Alloc>
struct is_dynamic_container<std::decay<std::vector<T , Alloc>>::type>
{
    static const bool value = true;
};

^^这不起作用。

我只是想写is_dynamic_container<std::vector<int>&>而不是is_dynamic_container<std::decay<std::vector<int>&>::type>那可能吗?

TC
template<class T>
using is_dynamic_container_with_decay = is_dynamic_container<std::decay_t<T>>;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在std :: forward中使用std :: decay

什么是std :: decay,什么时候应该使用?

std :: is_convertible中的std :: decay是否冗余?

std :: decay和std :: remove_reference之间的区别

std :: decay和删除const限定词

类型错误:参数“weight_decay”的多个值

根据类型特征专门化演员

如何部分专门化类模板非类型参数

在C ++ 11中,什么时候应该显式使用std :: decay?

为什么在以下情况下需要使用std :: decay?

在C ++ 17中使用转发引用时,模板结构是否需要std :: decay?

编译时进行类型专门化

带有 std::enable_if 和 std::decay 的 C++ 类构造函数模板

如何专门化std :: begin?

`std::thread` 对象的构造函数中的 `decay_copy` 有什么作用?

是否需要在noexcept运算符中进行std :: decay?

如何专门化具有无类型约束的特征?

使用类型特征专门化字符串迭代器的模板功能

Nan在Keras中使用Adam Optimizer与“ Learning Rate Step Decay”调度程序损失了Nan吗?

C ++-std :: decay <T>和std :: make_tuple <D>-无法将参数从'D'转换为'D &&'

Cython:无效使用融合类型,类型不能专门化

如何专门化/重载模板化类型的模板函数

如何使用 QtConcurrrent Qt6 运行成员函数?类型 'decay_t 不能在 '::' 之前使用,因为它没有成员)

当类型是指针时,模板类方法专门化失败

字符串化递归`std :: vector <std :: vector <... >>`而不使用部分模板函数专门化

如何部分专门化枚举值的类模板?

在部分模板专门化中使用括号

如何在C ++中使用枚举专门化函数的返回类型?

如何转发元组的类型以专门化其他模板?