C 11中列表初始化的优点
发布时间:2020-12-16 09:59:04 所属栏目:百科 来源:网络整理
导读:到目前为止,我发现了以下使用 list initialization(a.k.a.统一初始化). 1)在介绍之前是列表初始化功能 int a=3.3f; // ouch fractional part is automatically truncated 但是在C 11中 int a{3.3f}; // compiler error no implicit narrowing conversion all
到目前为止,我发现了以下使用
list initialization(a.k.a.统一初始化).
1)在介绍之前是列表初始化功能 int a=3.3f; // ouch fractional part is automatically truncated 但是在C 11中 int a{3.3f}; // compiler error no implicit narrowing conversion allowed 2)动态数组元素可以静态初始化. #include <iostream> int main() { int* p=new int[3]{3,4,5}; for(int i=0;i<3;i++) std::cout<<p[i]<<' '; delete[] p; } 3)它解决了most vexing parse问题 如果你告诉我列表初始化的其他优点会更好.除了3以上,列表初始化还有什么优点吗? 非常感谢您的回答. 解决方法
您没有提到的一个显着优点是它在模板元编程中的用处,您现在可以使用模板计算某些内容,然后在constexpr函数中展开一些模板数据结构并将结果存储在数组中.
例如,见:Populate An Array Using Constexpr at Compile-time 在代码中: template<unsigned... Is> constexpr Table MagicFunction(seq<Is...>){ return {{ whichCategory(Is)... }}; } 我认为在C 11之前没有办法做任何事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |