Проблема с std ::atomic::compareexchangeweak(): ошибка компилятора при отсутствии совпадающей функции-члена

#c 11

#c 11

Вопрос:

Пытаюсь запустить какой-то многопоточный фрагмент кода, и компилятор clang llvm жалуется, что std::atomic<double>::compare_exchange_weak() не имеет правильного количества аргументов. Кто-нибудь может, пожалуйста, помочь?

спасибо, Амин

 static std::atomic<int> counter(0);
std::atomic<double> x = {0.0000000003};


template class std::vector<double>;

struct TestVector
{
    std::vector<double> Vect;
    explicit TestVector(std::size_t n) : Vect(std::vector<double>(n))
    {
        for(auto i = 0; i< Vect.size();   i)
        {
            Vect[i] = std::cos(i*M_PI/2.0);
        }
    }
};

const TestVector Z(30000);

void TestOnAtomics()
{
    int j { 0};
    double y = (Z.Vect)[j]   0.00000005;
    const double u = 1.22222222;
    while(!(x.compare_exchange_weak(y,u)) amp;amp; j<((Z.Vect).size() - 1))
    {
          counter;
        x.store(std::move((Z.Vect)[j]), std::memory_order::memory_order_seq_cst);
          j;
        std::cout << "nMy value is " << x << " and that of y is: " << y << "n";
        y = (Z.Vect)[j];
    };
}
  

Комментарии:

1. Что он сказал вам о кандидатах?

2. Кроме того, в коде в вашем вопросе отсутствуют #include строки.

3. Не знаком с atomic, но согласно документации, которую я нашел, std::atomic_compare_exchange_weak() принимает 3 аргумента в C 11. Вы указали 2.

4. @Chipster это бесплатная функция, OP использует функцию-член

5. пожалуйста, укажите полную ошибку