c – 初始化列表大小的Deduce模板参数
发布时间:2020-12-16 10:04:23 所属栏目:百科 来源:网络整理
导读:我有以下(不可编译)代码: template size_t N void foo( std::arrayint,N ){ // Code,where "N" is used.}int main(){ foo( { 1,2 } );} 在这里,我想将一个任意数量的int传递给函数foo – 为方便起见,我将使用std :: initializer_list表示法. 我试图使用std
我有以下(不可编译)代码:
template< size_t N > void foo( std::array<int,N> ) { // Code,where "N" is used. } int main() { foo( { 1,2 } ); } 在这里,我想将一个任意数量的int传递给函数foo – 为方便起见,我将使用std :: initializer_list表示法. 使用std :: initializer_list而不是std :: array也无法解决问题,因为(与std :: array相反)std :: initializer_list的大小不会被捕获为模板参数. 有谁知道可以使用哪个数据结构,以便可以使用std :: initializer_list表示法传递整数,而不显式传递foo的模板参数N? 提前谢谢了 解决方法
多亏了
core issue 1591,你可以使用
template <std::size_t N> void foo( int const (&arr)[N] ) { // Code,where "N" is used. } foo({1,2,3}); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |