带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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |