td::array是在C++11标准中增加的STL容器,它的设计目的是提供与原生数组类似的功能与性能。巧的是,C++标准真的在TS v2试验版本中推出过细心的朋友会注意到,上面这个定义与C++20的推荐实现有所差异,这是有目的的。Hoho,有点惨是不,绕了一圈回到原点,还是不能强制指定类型。首先能想到的做法是在to_array_impl函数中放入一个if判断之类的语句,对于超出目标数值范围的输入抛出异常或者做其他处理。一旦在里面加入了错误判断,意味着运行时的每一次调用性能都会下降。这就保证了校验一定只会发生在编译期,不会带来任何运行时开销。于是,它成为了编译期返回集合数据的首选。这段代码的编译运行都没有问题,但它并不是推荐的做法。答案为:可以是,但需要C++17支持。
暂无评论