加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

带get的数据结构,返回constexpr(C)

发布时间:2020-12-16 07:13:28 所属栏目:百科 来源:网络整理
导读:我目前正在寻找一种封装数据的数据结构,以便进行编译时访问.因此,访问的值应作为constexpr返回. 虽然元组确实有一个constexpr构造函数,但元组的get函数不会返回constexpr. 是否存在这样的数据结构,或者是否可以手动定义这样的数据结构? 最终目标是在某种对
我目前正在寻找一种封装数据的数据结构,以便进行编译时访问.因此,访问的值应作为constexpr返回.

虽然元组确实有一个constexpr构造函数,但元组的get函数不会返回constexpr.

是否存在这样的数据结构,或者是否可以手动定义这样的数据结构?

最终目标是在某种对象中打包编译时已知值,将其(通过模板)传递给函数,访问那里的元素,并将编译时已知值直接粘贴到二进制文件中作为常量.为了我的目的,封装部分至关重要.

解决方法

从C 14开始,std :: tuple确实接受了constexpr std :: get

#include <tuple>

int main()
{
   constexpr std::tuple<int,int,int> t { 1,2,3 };
   static_assert(std::get<0>(t) == 1,"");
}

Live Example

类似地,你可以使用std :: array以及std :: get(而且operator []现在也是constexpr).原始C阵列也可以完成.

#include <array>

int main()
{
   constexpr std::array<int,3> a {{ 1,3 }};
   static_assert(std::get<0>(a) == 1,"");
   static_assert(a[0] == 1,"");
}

Live Example

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读