我有一个不可移动且不可复制的类型:
struct A
{
A(std::string p1, int p2){}
A(A const &) = delete;
A(A&&) = delete;
A& operator=(A const &) = delete;
A& operator=(A&) = delete;
};
我可以这样构建boost可选:
boost::optional<A> op(boost::in_place("abc", 5));
我还需要初始化boost::optional<A>
,它是一个类成员。这是我的解决方案:
class B
{
public:
B(const boost::optional<A>& op): op_(op) {}
private:
const boost::optional<A>& op_;
};
B b(boost::optional<A>(boost::in_place("abc", 5)));
是否可能只有boost::optional<A>
类成员并以某种方式对其进行初始化?
编辑(说明)
我想拥有boost::optional<A> op_
类数据成员,但我不知道如何初始化它。
答案 0 :(得分:2)
您可以将$up = $true
$finish = $false
$timeout = 50
Write-Host "Updating" -NoNewline
do {
for ($i=0;$i -le 100;$i++){
if ($i -eq 100){$up = !$up}
if ($up){
$str = ""
$x=99-$i
for($z=0;$z -le $i;$z++){$str+="."}
for($y=0;$y -le $x;$y++){$str+=" "}
Write-host "`rUpdating$str" -NoNewline
Start-Sleep -Milliseconds $timeout
}else{
$str = ""
$x=99-$i
for($y=0;$y -le $x;$y++){$str+="."}
for($z=0;$z -le $i;$z++){$str+=" "}
Write-host "`rUpdating$str" -NoNewline
Start-Sleep -Milliseconds $timeout
}
}
if ($timeout -le 0){$finish = $true}
$timeout-=10
} until ($finish)
$str = ""
for ($i=0;$i -le 93;$i++){$str+=" "}
Write-Host "`rUpdate Complete!$str"
Read-Host "Press [ENTER] to close this Window"
的构造函数声明为
B
并实例化为class B {
public:
B(std::string p1, int p2) :
op_(boost::in_place<A>(std::move(p1), p2)) {}
private:
const boost::optional<A> op_;
};
B
请注意,与您问题中B b("abc", 5);
的定义相反,我将数据成员op_
更改为此处未引用。