如何修改boost :: apply_visitor以返回值?

时间:2015-11-24 09:15:42

标签: c++ boost-variant apply-visitor

我正在尝试使用boost :: variant和boost :: apply_visitor。这已经有效了,除非我试图让Vistor的函数返回一个(布尔值)。我在SO上做了很多这样的例子,但我无法创建一个工作样本。这是我的代码没有返回值:

.fa.fa-plus-circle::before {
  content: '⊕';
}
.fa.fa-binoculars::before {
  content: '⛘';
}
.fa.fa-5x {
  font-size: 5em;
}
.fa.fa-border {
  border: .1em solid;
  border-radius: .1em
}
div {
  display: inline-block;
}
a {
  text-decoration: none;
  text-align: center;
  display: inline-block;
}
a i.fa {
  display: block;
  font-style: normal;
  text-align: center;
}

1 个答案:

答案 0 :(得分:5)

我通过与其他例子比较自己找到了解决方案。您必须修改不仅函数(A),还要修改Static_visitor(B)的声明

  • (A) bool operator()(double& valueFloat)const
  • (B)class CnVisitorReturn:public boost :: static_visitor< bool >

显示修改过的样本:

<br/>
<br/>
<br/>
<div id="addTradingOutageBtnWrap">
  <a id="addTradingOutageBtn" href="addTradingOutage.action">
    <i class="fa fa-plus-circle fa-5x fa-pull-left fa-border"></i>
    Add
  </a>
</div>

<div id="viewTradingOutageBtnWrap">
  <a id="viewTradingOutageBtn" href="viewTradingOutage">
    <i class="fa fa-binoculars fa-5x fa-pull-left fa-border"></i>
    View
  </a>
</div>
</div>