std :: atomic con clase personalizada (C ++ 11)

Estoy usando std :: atomic con una clase personalizada en mi biblioteca. Todo funciona bien con MSVC, pero ahora que estoy intentando que se ejecute en macOS, aparece un error de vinculador:

Símbolos no definidos para la arquitectura x86_64: "__atomic_store", referenciado desde: _main en main.o

He creado un código de prueba para replicar esto

#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;
}

Por supuesto, este ejemplo no tiene mucho sentido, pero es lo más corto que se me ocurre. Se ejecuta en VS2012, pero no en xcode (me da el error de vinculador que se muestra arriba).

Entonces, ¿qué está pasando? ¿Estoy abusando de std :: atomic aquí? La biblioteca en la que estoy trabajando tiene muchos subprocesos y se utiliza para el procesamiento de audio. Entonces, si no uso std :: atomic de la manera correcta, realmente no se muestra, porque el rendimiento es muy bueno y no tengo ningún problema con el subprocesamiento. ¿O acaso xcode carece de algo?

Actualizar:

He comprobado la respuesta de andrey porque tiene la mayor cantidad de información, aunque las 3 respuestas son útiles. No soy un experto en esto (obviamente) pero parece que VS2012 va más allá de lo que debería implementarse en C ++ 11.

Entonces, ¿cómo ir desde aquí? Veo algunas opciones.

No utilice atómico para esta clase. En mi caso particular, esto sería muy difícil porque mi clase vectorial se usa en todo el código. Bloquear y desbloquear mutexes probablemente ralentizaría mucho las cosas.Implementar las funciones yo mismo para atómico. Eso me parece muy complicado. Lo guardaré como última opción.A ver si se puede hacer algo con boost :: atomic. Esto parece funcionar a primera vista. Aunque tengo que hacer más pruebas al respecto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta