繁体   English   中英

C ++构造函数中的双花括号

[英]Double curly braces in C++ constructor

以下C ++代码行中的双花括号是什么意思?

piranha::symbol_set ss({{piranha::symbol(detail::poly_print(var))}});

对于上下文,这是来自SymEngine代码中的文件( "symengine/polys/uintpoly_piranha.h" ),可以在下面的链接中找到,以及上面一行中使用的Piranha库。

我知道单个花括号用作初始化列表,但括号内的双花括号的含义对我来说没什么意义。

我在双花括号上找到的主要内容是这篇文章 ,但它似乎不适用于此。

此外,我为这样的源代码链接道歉,但我不确定如何在缺乏理解的情况下做出一个较小的例子。

谢谢!

可以使用卷曲括号来描述

  • 初始化列表,解释外括号(创建符号的std::initializer_list ,参见相应的构造函数
  • 构造函数调用的简写表示法,它解释了内部大括号(使用移动构造函数创建symbol实例,请参阅相应的构造函数
    如果预先知道参数的类型,则可以只编写{parameters}而不是symbol{parameters} {parameters} 这也适用于返回值和变量初始化。

那么这一行实际发生的是:

  • detail::poly_print(var)返回一个std::string
  • 该字符串用于构造piranha::symbol
  • 然后将此临时值传递给symbol的移动构造函数(我在这里猜测),构造另一个symbol
    这似乎有点多余,但如果代码仅使用一对大括号,我还没试过
  • 然后将此piranha::symbol存储在std::initializer_list
  • 然后传递给piranha::symbol_set的构造piranha::symbol_set

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM