std :: atomic com classe customizada (C ++ 11)

Eu estou usando std :: atomic com uma classe personalizada na minha biblioteca. Tudo funciona bem com o MSVC, mas agora que estou tentando executá-lo no macOS, recebo um erro de vinculador:

símbolos indefinidos para a arquitetura x86_64: "__atomic_store", referenciado de: _main in main.o

Eu criei algum código de teste para replicar isso

#include <iostream>
#include <atomic>

using namespace std;

class Vec {
    public:
    int x, y, z;
    Vec() { x = y = z = 0; }
};

std::atomic<Vec> x;


int main()
{
  Vec a;
  x = a;
  cin.get();
    return 0;
}

É claro que este exemplo não faz muito sentido, mas é o mais curto que eu poderia fazer. Ele roda no VS2012, mas não no xcode (me dando o erro de linker mostrado acima).

Então o que está acontecendo? Estou abusando std :: atômica aqui? A biblioteca na qual estou trabalhando é altamente multithread e usada para processamento de áudio. Então, se eu não estou usando std :: atomic da maneira correta, ele não está realmente mostrando, porque o desempenho é muito bom e eu não tenho nenhum problema de encadeamento com ele. Ou o xcode talvez falte alguma coisa?

Atualizar:

Eu verifiquei a resposta de andrey porque ela tem mais informações, embora todas as 3 respostas sejam úteis. Eu não sou especialista nisso (obviamente), mas parece que o VS2012 vai além do que deve ser implementado em C ++ 11.

Então, como sair daqui? Eu vejo algumas opções.

Não use atômica para esta classe. No meu caso particular, isso seria muito difícil porque minha classe vetorial é usada em todo o código. Bloquear e desbloquear mutexes provavelmente atrasaria muito as coisas.Implementar as funções sozinho para atômica. Isso parece muito complicado para mim. Vou salvá-lo como a última opção.Veja se algo pode ser feito com boost :: atomic. Isso parece funcionar à primeira vista. Eu tenho que fazer mais testes sobre isso.

questionAnswers(2)

yourAnswerToTheQuestion