Простой Spinlock с атомарным не компилируется

Я наткнулся на тот простой Spinlock, который также работает с lock_guard для хранения соглашений RAII:

#include <atomic>
class SpinLock
{
private:
std::atomic_flag lck = ATOMIC_FLAG_INIT;

public:
inline SpinLock(){};
~SpinLock(){};

inline void lock(){
while (lck.test_and_set(std::memory_order_acquire))
{
}
}

inline void unlock()
{
lck.clear(std::memory_order_release);
}
};

Но это не компилируется.

Error   1   6   error C2664: 'std::atomic_flag::atomic_flag(const std::atomic_flag &)' : cannot convert argument 1 from 'int' to 'const std::atomic_flag &' ...\spinlock.h  1   ShortDB

Может кто-нибудь объяснить почему? Есть много примеров, которые делают то же самое. (например cplusplus.com)


Редактировать:
Макро-стрит от атомной VS2013:

// STRUCT atomic_flag
#define ATOMIC_FLAG_INIT    {0}

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]