基于C ++ 11中的模板参数选择数组大小?

恐惧症

考虑以下代码:

enum class EnumType
{
  Type1,
  Type2
};

constexpr std::size_t the_length;

template <EnumType T>
int function()
{
  std::array<uint8_t, the_length> x;
  //some code here that uses x 
}

我希望数组的长度x根据类型具有不同的值T例如,如果ifT可以取2个值(Type1Type2)之一,则我希望the_length值为10 if T==Type1如果值为20 T==Type2可以在C ++ 11中完成吗?谢谢

最高66

好的老三元运算符怎么了?

template <EnumType T>
int function()
{
  std::array<SomeType, T == EnumType::Type1 ? 10u : 20u> x;
}

如果Ttypename,而不是某种类型的值,则只需更改测试

template <typename T>
int function()
{
  std::array<T, std::is_same<SomeType1, T>::value ? 10u : 20u> x;
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

基于C ++模板的get()

如何基于C#中的方法参数设置数组的大小?

C ++ 11模板中的默认位置参数

在C ++ 11中枚举布尔模板参数

在C ++ 11中将静态constexpr数组转换为模板参数

C ++动态,基于数组的堆栈

基于外部文件的C ++数组

在 C++ 函数模板中,为什么我不能使用 lambda 来指定参数的数组大小?

C中基于UDP的聊天

C ++中基于范围的for的性能

C++ 多个成员函数定义,基于枚举模板参数

如何自动推断结构模板中C数组的大小?

使用模板的struct c ++中不同大小的数组

C ++ 11中的可变参数模板和多重继承

C ++ 11:模板参数中的SFINAE,GCC与Clang

成员函数指针的decltype作为c ++ 11中的模板参数

如何推断C ++ 11中的模板参数类型?

在C ++中基于多个运行时字符串选择多个模板

基于模板元组的Arity的C ++ Enable方法

基于模板成员的存在的C ++成员重载

C ++ 17:泛型(基于多重继承?)检查参数包中的模板

在c ++ 11中调用模板参数的函数,其中模板参数为chrono :: system_clock

C ++ 11 std :: list的基于范围的for循环

C ++ 11基于反向范围的for循环

C ++可变参数模板:根据可变参数模板大小列出所有数组元素的优雅方法

C向量处理基于参数的不同数组类型

C ++ 11中可变的数组长度和模板输入

参数类型为'const C s [N]'的模板函数(类型C的元素的固定大小数组)

C ++ lambda或基于lambda基于签名的重载解析中的可选/忽略参数