问题标签 [boost-optional]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5083 浏览

c++ - 如何确保 boost::optional对象在发布构建中初始化?

当尝试获取 boost::optional 对象的值时,BOOST_ASSERT 用于确保对象确实已初始化。

但是,当取消引用未初始化的可选项时,我想要的是抛出异常 - 有没有办法在发布版本中获得这种行为?如果没有,是否有任何其他类似的库具有这种行为?

我不想每次在取消引用对象之前都使用 is_initialized 方法,而且我还想避免将可选类包装在我自己的类中以获得这种行为。

0 投票
5 回答
2986 浏览

c++ - 需要 C++ boost::optional 的帮助

任何人都可以告诉我,我是否将 i 的值设为 0,我想要做的是在输入“if”条件和“else”部分后打印“i”的值。

请做必要的事,请向我提交任何修改的感谢 Arun.D

非常感谢您的帮助..在此先感谢

0 投票
3 回答
14328 浏览

c++ - boost::optional 到 bool 的转换

如何防止此代码的最后一行编译?

最后一行不检查opt's 包含的 int 值,而是编译为类型转换为 bool,并且似乎不是用户想要的。

安全布尔成语似乎在这里相关?

0 投票
2 回答
1248 浏览

c++ - 将 boost::optional 与 boost::adaptors::indirected 一起使用

我正在尝试编译以下代码:

但是,我遇到了一些错误,例如没有element_typeboost::optional<unsigned>. 然而,参考页面页面说,唯一的前提是operator*()一元函数的存在。有没有办法让它工作?

0 投票
3 回答
12639 浏览

c++ - C++ 标准库中的 boost::optional 替代方案

我试图让我的程序在不boost使用的情况下工作,但找不到一些有用模式的替代方案。也就是说,我在标准库中找不到boost::optional-likewise 模式。boost::optional(C ++ 11或其他地方)有一些标准的替代方案吗?

0 投票
2 回答
29415 浏览

c++ - 如何将 boost::optional 设置回未初始化状态?

我怎样才能“重置”/“取消设置”一个boost::optional

0 投票
3 回答
7839 浏览

c++ - 是否可以移动 boost::optional ?

我一直在尝试在具有boost::optional成员变量的类中定义默认的移动构造函数。

我的编译器同时支持移动语义和默认的移动构造函数,但我无法让它工作。

有没有办法在boost::optional 修改 Boost 源代码的情况下移动 a?还是我应该等到 Boost 支持移动?

我过去也有同样的问题boost::any

0 投票
1 回答
8111 浏览

c++ - boost::none_t 实现的基本原理是什么?

Boost.Optional使用一个虚拟类型来允许构造boost::optional<T>. 这种类型称为none_t,并且为了方便起见,已经在标头中定义了一个实例none,允许我们编写如下代码:

查看 的定义none_t,我注意到它实际上是一个 typedef,对应于指向某个虚拟结构的成员指针:

与这样的简单空结构相比,使用这种复杂的 typedef 有什么好处?

0 投票
0 回答
787 浏览

c++ - 将 boost 的 multi_array 和 optional 与 C++11 unique_ptr 混合不起作用

我已经用 G++ 4.7 组合了一个最前沿的设置(尽管目前我仍在使用sudo apt-get boost-all-devDebian Wheezy 附带的 boost 1.48)。

我的代码设置在要使用的逻辑数据结构是 unique_ptr 的多维数组的地方。但是multi_array,如果其中有一个 unique_ptr ,似乎甚至无法构造一个空的单元素数组。因此这是有效的:

但这不会:

我想编译器的相关抱怨是:

/usr/include/c++/4.7/bits/stl_uninitialized.h:225: 来自 'void std::uninitialized_fill_n(_ForwardIterator, _Size, const _Tp&) [with _ForwardIterator = std::unique_ptr*; _Size = 无符号整数;_Tp = std::unique_ptr]'</p>

optional< unique_ptr<...> >即使我应用了此处提供的补丁,我也遇到了一些问题:

https://svn.boost.org/trac/boost/ticket/1841

(注意:通过Is it possible to move a boost::optional 找到的?

例如:

我觉得我在做的事情是合法的。事实上,通过将 unique_ptr 合并到这个项目中,我已经在所有权转移语义方面发现了一些错误。所以我不想说“哦,这太复杂了,只需使用原始指针”

这是否在 boost 的议程上支持?有时间表吗?在此期间我可以使用任何简单的解决方法吗?

0 投票
3 回答
3072 浏览

c++ - 使用 Visual Studio 调试时看不到 boost::optional 内容

如果我尝试直接查看变量,我会看到一个?标志。如果我创建一个调用该is_initialized函数的手表,我会收到以下错误:

CXX0033:错误:OMF 类型信息中的错误

我没有找到与使用 Google 进行 Boost 有关的此错误的太多信息。

还有其他人经历过吗?OutputDebugString到处使用和重建都很麻烦......

编辑:将 Visual Studio 2010 SP1 与 Windows XP SP3 同上的所有修补程序和 Boost 1.49.0 一起使用

更新:这个问题来来去去,它不会一直发生;调试器可视化工具是一个很好的解决方案,我已将它们作为我的全新工具