【发布时间】:2020-11-19 06:20:32
【问题描述】:
我有一个模板类接受 MyIDType 的容器:
std::array<MyIDType, SIZE>std::unordered_map<A, MyIDType>std::unordered_map<B, MyIDType>- 等
我想静态断言 MyIDType 是元素。我试过这个:
template<class CONTAINER>
class Cod
{
using ELEMENT_TYPE = typename CONTAINER::value_type;
static_assert(std::is_same<ELEMENT_TYPE, MyIDType>::value);
但意识到它会失败,因为std::unordered_map 的值类型实际上是std::pair<something, MyIDType>
为std::array 和std::unordered_map 检查MyIDType 的最佳方法是什么?
地图有mapped_type,但是当我传入数组时显然不会编译。
【问题讨论】:
-
你打算只支持两种容器类型吗?
-
if constexpr或静态断言中更长的或表达式。 -
@SergeyA 是的,只有这两个,但地图的键类型可能会改变。
-
你想要
std::unordered_map::mapped_type
标签: c++ arrays templates types unordered-map