I have an existing code for an application that uses
BOOST_DETAIL_SPINLOCK_INIT from  boost/smart_ptr/detail/spinlock.hpp.
It is all fine when using with boost ver 1.53. I am trying to migrate
to boost ver 1.66 and now this compilation fails. To isolate the
issue, I have a sample program:

#include <iostream>
#include <boost/smart_ptr/detail/spinlock.hpp>
class BoostTest {
    public:
    BoostTest(int v): val(v), bLock(BOOST_DETAIL_SPINLOCK_INIT) {
        std::cout << "constructor called" << std::endl;
    }

    int getValue() {
        std::cout << "getValue() called" << std::endl;
        return val;
    }

    private:
    int val;
    boost::detail::spinlock bLock;
};

int main() {
    std::cout << "starting test" << std::endl;
    BoostTest bt(10);
    std::cout << "value now " << bt.getValue() << std::endl;
}

With ver 1.66, it now gives me the error. Why this error after upgrade
to 1.66? How do I correct it?
$ g++ -std=c++11
-I/data/hdd/code/mgmt/common/external/boost/ifc/dist/include -c
boosttest.cc
boosttest.cc: In constructor 'BoostTest::BoostTest(int)':
boosttest.cc:6:63: error: use of deleted function
'boost::detail::spinlock::spinlock(boost::detail::spinlock&&)'
     BoostTest(int v): val(v), bLock(BOOST_DETAIL_SPINLOCK_INIT) {
                                                               ^
In file included from
/data/hdd/code/mgmt/common/external/boost/ifc/dist/include/boost/smart_ptr/detail/spinlock.hpp:47:0,
                 from boosttest.cc:2:
/data/hdd/code/mgmt/common/external/boost/ifc/dist/include/boost/smart_ptr/detail/spinlock_std_atomic.hpp:27:7:
note: 'boost::detail::spinlock::spinlock(boost::detail::spinlock&&)'
is implicitly deleted because the default definition would be
ill-formed:
 class spinlock
       ^
/data/hdd/code/mgmt/common/external/boost/ifc/dist/include/boost/smart_ptr/detail/spinlock_std_atomic.hpp:27:7:
error: use of deleted function 'std::atomic_flag::atomic_flag(const
std::atomic_flag&)'
In file included from /usr/include/c++/4.8/atomic:41:0,
                 from
/data/hdd/code/mgmt/common/external/boost/ifc/dist/include/boost/smart_ptr/detail/spinlock_std_atomic.hpp:19,
                 from
/data/hdd/code/mgmt/common/external/boost/ifc/dist/include/boost/smart_ptr/detail/spinlock.hpp:47,
                 from boosttest.cc:2:
/usr/include/c++/4.8/bits/atomic_base.h:275:5: error: declared here
     atomic_flag(const atomic_flag&) = delete;
     ^
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users

Reply via email to