Clang 8 complains about missing dtor, and this circumvents this problem.
```
/home/jenkins/workspace/ceph-master/src/librbd/io/ImageDispatchSpec.cc:136:48:
error: temporary of type 'boost::static_visitor<bool>' has protected
destructor
return boost::apply_visitor(IsWriteOpVisitor{}, m_request);
^
/home/jenkins/workspace/ceph-master/src/librbd/io/ImageDispatchSpec.cc:152:28:
note: in instantiation of member function
'librbd::io::ImageDispatchSpec<librbd::ImageCtx>::is_write_op' requested
here
template class librbd::io::ImageDispatchSpec<librbd::ImageCtx>;
^
/usr/local/include/boost/variant/static_visitor.hpp:53:5: note: declared
protected here
~static_visitor() = default;
^
1 error generated.
gmake[2]: *** [src/librbd/CMakeFiles/rbd_internal.dir/build.make:895:
src/librbd/CMakeFiles/rbd_internal.dir/io/ImageDispatchSpec.cc.o] Error 1
```
The details of the problem are explained in more detail in:
https://github.com/ceph/ceph/pull/26301/commits/
09870d7a083913b5a3830ba8b0be04d0b0996aca
Signed-off-by: Willem Jan Withagen <wjw@digiware.nl>
template <typename I>
bool ImageDispatchSpec<I>::is_write_op() const {
- return boost::apply_visitor(IsWriteOpVisitor{}, m_request);
+ return boost::apply_visitor(IsWriteOpVisitor(), m_request);
}
template <typename I>