MK.*_*MK. 9 c++ boost optional
boost :: optional支持in_place构造,如下所示:
#include <boost/optional.hpp>
#include <boost/utility/typed_in_place_factory.hpp>
class Foo
{
int a,b;
public:
Foo(int one, int two) : a(one),b(two) {}
};
int main()
{
boost::optional<Foo> fooOpt(boost::in_place<Foo>(1,3));
}
Run Code Online (Sandbox Code Playgroud)
一旦我们有一个初始化的fooOpt,有没有一种方法可以为它分配一个新的Foo而不创建一个临时的?
就像是 :
fooOpt = boost::in_place<Foo>(1,3);
Run Code Online (Sandbox Code Playgroud)
谢谢!
Bil*_*nch 10
#include <boost/optional.hpp>
int main() {
boost::optional<int> x;
x = boost::in_place(3);
}
Run Code Online (Sandbox Code Playgroud)
我们还可以通过以下方式显示(通过代码)这是通过Foo继承来就地构建对象boost::noncopyable:
#include <boost/optional.hpp>
#include <boost/noncopyable.hpp>
class Foo : boost::noncopyable {
public:
Foo(int one, int two) {}
};
int main() {
boost::optional<Foo> x;
x = boost::in_place(3, 4);
}
Run Code Online (Sandbox Code Playgroud)
最终,我们将获得访问权限std::optional.此类型将实现一种emplace()方法,该方法也将实现就地构造.
#include <optional>
int main() {
std::optional<int> x;
x.emplace(3);
}
Run Code Online (Sandbox Code Playgroud)
在1.56.0版本中,boost::optional还将实现emplace()我为std :: optional所讨论的方法.所以,让我们看看:
#include <boost/optional.hpp>
int main() {
boost::optional<int> x;
x.emplace(3);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5158 次 |
| 最近记录: |