问题标签 [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 回答
680 浏览

c++ - 提升::可选取消引用

我正在审查一些代码,并有这样的事情:

所以我的问题是,最后一行是否等同于:

0 投票
1 回答
53 浏览

c++ - 根据奇怪的因素调用不同版本的析构函数

为什么以下代码会生成这样的输出?

测试.cpp

主文件

编译

我解释了test.o提供 Test 的ctor & dtor然后链接器丢弃来自main.o的重复符号的这种行为,但它仅适用于dtor。如果我删除静态对象t那么链接器会丢弃test.o中的符号,输出是下一个

0 投票
1 回答
2399 浏览

c++ - boost::optional 不推荐使用 get_value_or

我怀疑 boost::optional's已被弃用,因为如果将右值作为参数get_value_or传递它是不安全的。default但是,能够引用可选值或默认替代值有时会很有用。

以下安全吗?

0 投票
0 回答
57 浏览

c++ - 如果类型是引用,则行为不同

tryValue在我的项目中经常使用该功能。它是一个简单的包装器boost::any,大大简化了它的日常使用。

现在,我扩展了这个函数,以便我可以处理引用。这有机会改变我里面的价值boost-optional

现在记住,如果我必须写tryValuetryValueRef. 该函数tryValue应该自己弄清楚是否T是引用(甚至是指针)。模板功能std::is_reference<T>应该可以完成这项工作,但我不知道如何有效地使用它。

第二部分,我还不明白,为什么返回值tryValueRef需要一个额外*的值来设置值。

解决方案

对该函数进行简单的重命名就足以使其工作。

0 投票
0 回答
1704 浏览

c++ - 'operator=' 的 nlohmann json 模棱两可的重载

我使用以下代码收到此编译错误

完整的错误信息是

两个赋值运算符用例有什么区别?为什么第二个不起作用?

我正在使用 GCC 7.2.0,带有-std=c++14.

0 投票
1 回答
495 浏览

c++ - 我编写了 C++ 代码来将 boost::optional 视为一个范围,但它不能编译

我希望将 boost::optional 视为可以包含零个或一个元素的容器。从逻辑上讲,我应该能够为容器创建一个迭代器并在其上使用 boost::for_each。我的尝试如下,但无法编译。我在GodBolt上试过了。

https://godbolt.org/g/z5MFfe

下面的代码供参考。

我相当确定我已经正确地实现了范围和迭代器的概念,但是我在 gcc 8.1 中得到了以下编译器错误(根据 godbolt)

0 投票
1 回答
993 浏览

c++ - 使用 std::experimental::optional 给出编译错误

我第一次使用可选功能,知道这段代码有什么问题,我希望从存储的元组中检索值retCode

编译错误

0 投票
0 回答
753 浏览

c++ - bsoncxx::stdx::optional 和 mongocxx::stdx::optional

MongoDB C++ 驱动程序bsoncxx::stdx::optional之间有什么区别吗?mongocxx::stdx::optional他们都继承boost::optional吗?

我在 MongoDB C++ 驱动程序 API 文档中找不到关于它们的描述。

0 投票
1 回答
5053 浏览

c++ - '_HAS_CXX17' 宏是否可用于自定义项目标头以启用 C++17 语言集功能?

我想创建使用标准 C++ 中的“可选”的标头。但是,我的标头将引用自 Visual Studio 2015 以及 Visual Studio 2017 项目。

我想要一些东西,例如对于 Visual Studio 2017(具有 C++ 17 语言功能集),使用 std::optional 并且对于 Visual Studio 2015,使用 boost::optional。

我在想这样的事情:

以这种方式使用“_HAS_CXX17”宏可以吗?有没有更好的方法来做到这一点?

0 投票
1 回答
404 浏览

c++ - 为什么是 boost::optional就 std::is_convertible 而言不可转换为 bool

我有

它无法编译。std::is_convertible的定义是

并且 optional 显然可以转换为布尔值,因为我们总是像这样使用它

我在这里想念什么?