boost::spirit指针属性是用nullptr初始化的吗?
Are boost::spirit pointer attributes initialized with nullptr?
我想我在某处的调试器中看到某个指针类型的boost::spirit
属性被设置为nullptr
,但我没有这样做。这只是巧合还是boost::spirit
实际上负责初始化指针类型属性?
目前,当我需要确定时,我在规则的开头放了一个eps [ _val = nullptr ]
,但很高兴知道这样我就可以省略它。
boost::spirit真的负责初始化指针类型的属性吗?
实际上,是的。
精神使用make_attribute
.注释似乎表明这只会发生在语义操作中,但它实际上也在rule
解析器中使用(但传递给子解析器表达式的内容可能会被转换)。
make_attribute
使用boost::value_initialized
特征:
以通用方式构造和初始化对象在C++中很困难。问题是有几种不同的规则适用于初始化。根据类型,新构造对象的值可以是零初始化(逻辑为 0)、默认构造(使用默认构造函数)或不确定。编写通用代码时,必须解决此问题。模板value_initialized为标量、联合和类类型的值初始化提供了一个具有一致语法的解决方案。此外,value_initialized 为有关值初始化的各种编译器问题提供了一种解决方法。此外,还提供了 const 对象(initialized_value,以避免在从value_initialized对象检索值时重复类型名称。
因此,除非代码中有任何自定义的专用化,否则默认行为确实提供值初始化。
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- C++使用整数的压缩数组初始化对象
- C++初始化基类
- 多成员Constexpr结构初始化
- 复制列表初始化的隐式转换的等级是多少
- 内联映射初始化的动态atexit析构函数崩溃
- 如何在C++中初始化嵌套类中的2个memeber
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 没有用于初始化C++中的变量模板的匹配构造函数
- 在未初始化映射的情况下,将值插入到映射的映射中
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- boost::spirit指针属性是用nullptr初始化的吗?
- 为什么 char 可以在 std::array 中初始化为 nullptr,而不是单独初始化?
- 使用默认值初始化unique_ptr向量(nullptr?
- 如何使用nullptr初始化同一类对象的静态指针数组?
- 为什么我不能使用 nullptr 初始化自动推导的指针?
- 指向自定义类型的静态指针在初始化后使用相同类型的静态非空指针保持 nullptr
- 由nullptr初始化的C++11自动变量
- C++11:如何使用 nullptr 初始化某个类的指针数组
- 零初始化的 std::atomic<T*> 保证等同于 nullptr 初始化的 std::T* 保证?