¿Por qué g ++ todavía requiere -latomic

En29.5 Tipos atómicos del borrador de trabajo estándar de C ++ de noviembre de 2014 que dice:

Hay una plantilla de clase genérica atómica. El tipo de argumento de plantilla T será trivialmente copiable (3.9). [Nota: los argumentos de tipo que no son también inicializables estáticamente pueden ser difíciles de usar. —Final nota]

Entonces, por lo que puedo decir, esto:

#include <atomic>

struct Message {
    unsigned long int a;
    unsigned long int b;
};

std::atomic<Message> sharedState;

int main() {    
    Message tmp{1,2};       
    sharedState.store(tmp);         
    Message tmp2=sharedState.load();
}

debe ser un código c ++ 14 estándar perfectamente válido (y también c ++ 11). Sin embargo, si no enlacelibatomic manualmente, el comando

g++ -std=c++14 <filename>

da, al menos en Fedora 22 (gcc 5.1), el siguiente error de enlace:

/tmp/ccdiWWQi.o: In function `std::atomic<Message>::store(Message, std::memory_order)':
main.cpp:(.text._ZNSt6atomicI7MessageE5storeES0_St12memory_order[_ZNSt6atomicI7MessageE5storeES0_St12memory_order]+0x3f): undefined reference to `__atomic_store_16'
/tmp/ccdiWWQi.o: In function `std::atomic<Message>::load(std::memory_order) const':
main.cpp:(.text._ZNKSt6atomicI7MessageE4loadESt12memory_order[_ZNKSt6atomicI7MessageE4loadESt12memory_order]+0x1c): undefined reference to `__atomic_load_16'
collect2: error: ld returned 1 exit status

Si yo escribo

g++ -std=c++14 -latomic <filename>

todo esta bien. Sé que el estándar no dice nada sobre los indicadores del compilador o las bibliotecas que deben incluirse, pero hasta ahora pensé que cualquier código de archivo único y conforme al estándar puede compilarse mediante el primer comando.

Entonces, ¿por qué eso no se aplica a mi código de ejemplo? ¿Hay alguna razón racional?-latomic ¿Todavía es necesario, o es algo que aún no ha sido abordado por los encargados del compilador?

Respuestas a la pregunta(3)

Su respuesta a la pregunta