为何std::to_array与直接初始化有差异?如何免硬编码数组大小?
问题:实现无需硬编码大小且与std::array直接初始化行为一致的写法
我原本认为std::to_array与std::array的直接初始化等价,可用来避免在代码中硬编码数组长度,比如对比以下两种写法:
constexpr auto arr = std::to_array<unsigned char>({'f', 'o', 'o'});
与
constexpr std::array<unsigned char, 3> arr{'f', 'o', 'o'};
但实际测试发现,二者生成的汇编及二进制中的数据布局存在差异。我还尝试了std::experimental::make_array,结果也是如此。
请问能否实现一种无需硬编码数组大小、且行为与直接初始化完全一致的写法?手动匹配数组大小十分繁琐——编译器会在大小过短时发出警告,但过长时不会。
内容的提问来源于stack exchange,提问作者Zitrax
相关产品推荐
相关产品推荐

