下面这行 C++ 代码中的双花括号是什么意思?
piranha::symbol_set ss({{piranha::symbol(detail::poly_print(var))}});
对于上下文,这是来自 SymEngine 代码中的一个文件 ("symengine/polys/uintpoly_piranha.h"
),可以在下面的链接中找到它,Piranha 库也可以,它是在上面的行中使用。
- SymEngine 源代码:https://github.com/symengine/symengine
- 食人鱼源代码:https://github.com/bluescarni/piranha
我知道单花括号用作初始化列表,但括号集中的双花括号的含义对我来说意义不大。
我在双花括号上发现的主要内容是 this post , 但在这里似乎并不适用。
此外,对于这样链接源代码,我深表歉意,但由于我缺乏理解,我不确定如何制作一个更小的示例。
谢谢!
最佳答案
可以用大括号来描述
- 一个初始化列表,它解释了外括号(创建符号的
std::initializer_list
,参见 the corresponding constructor) - 构造函数调用的简写符号,它解释了内部
大括号(使用移动构造函数创建
symbol
实例,参见 the corresponding constructor )
如果事先知道参数的类型,则可以只编写{parameters}
而不是symbol{parameters}
。这也适用于返回值和变量初始化。
所以这一行实际发生的是:
std::string
从detail::poly_print(var)
返回- 这个字符串用于构造一个
piranha::symbol
- 然后将这个临时值传递给
symbol
的移动构造函数(我在这里猜测),构造另一个symbol
这似乎有点多余,但如果代码仅使用一对大括号,我还没有尝试过 - 此
piranha::symbol
然后存储在std::initializer_list
- 然后传递给
piranha::symbol_set
的构造函数
关于c++ - C++构造函数中的双花括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45336126/