问题标签 [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.
c++ - 提升::可选取消引用
我正在审查一些代码,并有这样的事情:
所以我的问题是,最后一行是否等同于:
c++ - 根据奇怪的因素调用不同版本的析构函数
为什么以下代码会生成这样的输出?
测试.cpp
主文件
编译
我解释了test.o提供 Test 的ctor & dtor然后链接器丢弃来自main.o的重复符号的这种行为,但它仅适用于dtor。如果我删除静态对象t那么链接器会丢弃test.o中的符号,输出是下一个
c++ - boost::optional 不推荐使用 get_value_or
我怀疑 boost::optional's已被弃用,因为如果将右值作为参数get_value_or
传递它是不安全的。default
但是,能够引用可选值或默认替代值有时会很有用。
以下安全吗?
c++ - 如果类型是引用,则行为不同
我tryValue
在我的项目中经常使用该功能。它是一个简单的包装器boost::any
,大大简化了它的日常使用。
现在,我扩展了这个函数,以便我可以处理引用。这有机会改变我里面的价值boost-optional
。
现在记住,如果我必须写tryValue
或tryValueRef
. 该函数tryValue
应该自己弄清楚是否T
是引用(甚至是指针)。模板功能std::is_reference<T>
应该可以完成这项工作,但我不知道如何有效地使用它。
第二部分,我还不明白,为什么返回值tryValueRef
需要一个额外*
的值来设置值。
解决方案
对该函数进行简单的重命名就足以使其工作。
c++ - 'operator=' 的 nlohmann json 模棱两可的重载
我使用以下代码收到此编译错误
完整的错误信息是
两个赋值运算符用例有什么区别?为什么第二个不起作用?
我正在使用 GCC 7.2.0,带有-std=c++14
.
c++ - 我编写了 C++ 代码来将 boost::optional 视为一个范围,但它不能编译
我希望将 boost::optional 视为可以包含零个或一个元素的容器。从逻辑上讲,我应该能够为容器创建一个迭代器并在其上使用 boost::for_each。我的尝试如下,但无法编译。我在GodBolt上试过了。
下面的代码供参考。
我相当确定我已经正确地实现了范围和迭代器的概念,但是我在 gcc 8.1 中得到了以下编译器错误(根据 godbolt)
c++ - 使用 std::experimental::optional 给出编译错误
我第一次使用可选功能,知道这段代码有什么问题,我希望从存储的元组中检索值retCode
编译错误
c++ - bsoncxx::stdx::optional 和 mongocxx::stdx::optional
MongoDB C++ 驱动程序bsoncxx::stdx::optional
之间有什么区别吗?mongocxx::stdx::optional
他们都继承boost::optional
吗?
我在 MongoDB C++ 驱动程序 API 文档中找不到关于它们的描述。
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”宏可以吗?有没有更好的方法来做到这一点?