问题标签 [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++ - 为什么这种使用 boost::none 无法使用 nvcc 编译?
我正在尝试编译以下代码:
使用以下命令行放置在文件a.cu
中,使用 CUDA 编译器:
但我得到了一堆错误:
为什么会发生这种情况,我可以在使用 nvcc 编译的(主机端)代码中实际使用 boost::optional 的同时规避这个问题吗?
附加信息:
- 该代码使用 g++ 6.3.0(我的发行版的编译器)编译得很好。
- 这段代码(或者更确切地说,类似的代码)用于在我使用的早期 Linux 发行版上编译和工作,其中编译器是 g++ 5.4.x 。
- 我已经用 Boost 版本 1.65.1 和 1.69.0 试过这个。
- 我已经尝试过使用 CUDA 版本 9.2.88 和 10.0.130 。
c++ - 如何将构造函数参数转发给 boost::optional
我有以下简单的结构:
我想在不复制的情况下将它与 boost optional 一起使用。这是一种选择:
是否可以不使用 emplace 功能?(我的意思是一行表达式)
c++11 - 如何初始化不可移动和不可复制的类成员 - boost::optional
我有一个不可移动和不可复制的类型:
我可以通过这种方式构建可选的 boost:
我还需要初始化boost::optional<A>
哪个是类成员。这是我的解决方案:
是否有可能只有boost::optional<A>
类成员并以某种方式初始化它?
编辑(澄清)
我想要boost::optional<A> op_
类数据成员,但我不知道如何初始化它。
c++ - boost::optional - 对构造函数通过引用获取其他对象的对象使用 boost::in_place
我尝试将 boost::in_place 用于不可移动和不可复制的对象,构造函数通过引用获取其他对象:
代码无法编译:将“A&”类型的引用绑定到“const A”会丢弃限定符
如何解决?
c++ - boost::optional 奇怪的未初始化问题
gcc 有时会通过可能未初始化的方式对 boost::optional 的工作发出警告,但我认为这是误报(如此处所述https://github.com/boostorg/optional/issues/72)。
但是现在 valgrind 在运行时报告了同样的问题,所以出了点问题,知道问题出在哪里:
valgrind 和 gcc 在线报告问题:
那个potentialyFoo::free_mem
可以用于未初始化的内存。
奇怪的是,如果我在Foo::free_mem
gcc 警告(9.1.0)中启用 printf 并且 valgrind(3.15)没有报告任何问题,如果我将它评论回 gcc 并且 valgrind 报告问题。
我以这种方式用 gcc 编译示例:
那么发生了什么,我的代码中的错误,boost::optional 中的错误,或者 valgrind 和 g++ 中的同时错误?
可能是 g++ 中的这个错误会生成错误的代码,因此 valgrind 也会抱怨错误?
c++ - 用 boost::optional 重载歧义,解决方法?
我想用 boost::optional 重载,但由于重载歧义而不能重载,我正在寻找一种解决方法。
例如,由于歧义,以下代码将无法编译:
我想做这个奇怪的事情的原因是,由于 boost::optional 的右值/左值问题引起的错误,我用函数重载替换了 boost::optional 实例。问题是发生了一些 API 损坏,所以我需要弃用旧的函数定义。
API 损坏的一个示例是使用其他默认参数,
要求我切换参数的顺序:
但是现在中断的情况是
foo(1, boost::none, 3.14);
,我想为这种类型的函数调用保留一个不推荐使用的函数定义。有没有优雅的解决方法?
我想一个(丑陋的)可能性是
但这不会激发喜悦。有任何想法吗?
c++11 - c++ - 是否可以创建一个可选的承诺?
考虑以下代码:
它无法编译,因为在 boost::optional 实现的深处,它试图使用 S 的复制构造函数。
有没有办法克服这个问题并在不复制承诺的情况下移动承诺?
我试图显式地将移动构造函数添加到 S
无济于事。
编译器错误信息:
使用 Boost 1.55.0、GCC 6.3
c++ - 在 C++ 中是否有 anti-std::move 的地方
boost::optional
可以存储引用,所以假设我想写一个这样的函数
这会失败,static_assert
因为传递给value_or
引用的参数optional
s 不应该是右值引用。我看到 boost 库的作者决定保护我免受类似
在那里我可以得到一个临时的悬空引用。
但是如果“我知道我在做什么”我可以用类似的东西来规避这个
哪里to_lvalue
可以定义为
可以说这是一个很好的“我知道我在做什么”的用例,或者我在这里错过了更大的东西吗?
c++ - 用另一个布尔值提升可选
我正在尝试编译类似的东西:
是否有可能实现它 - 将有效对象存储在变量中并将其分解为布尔值?
c++ - std::pair() 具有空值,例如 boost::optional
我已经编写了上面的类来获取链接统计信息,rx_error
, rx_dropped
, tx_error
, tx_dropped
。
在上面的两个函数中,getRxLinkStats()
和getTxLinkStats()
,我想知道是否有一种优雅的方式来返回它std::pair()
,这将表明它是空的,意思getLinkStats()
是失败了。