is_lock_free () retornou false após a atualização para o MacPorts gcc 7.3
Anteriormente, com o Apple LLVM 9.1.0,is_lock_free()
em estruturas de 128 bits retornaram true. Ter completostd::optional
suporte, atualizei para o MacPorts gcc 7.3. Durante minha primeira tentativa de compilação, encontrei esse erro notório do vinculador de showstopper:
Undefined symbols for architecture x86_64:
"___atomic_compare_exchange_16", referenced from:
Eu sei que talvez eu precise adicionar-latomic
. Com o Apple LLVM 9.1.0, não preciso disso e tenho um mau pressentimento sobre isso. Se estiver livre de bloqueios, você normalmente não precisará vincular a nenhuma biblioteca adicional, apenas o compilador é capaz de lidar com isso. Caso contrário, pode ser apenas baseado em bloqueio e exigir suporte de uma biblioteca adicional. Assim como eu temia, depois de adicionar-latomic
, construção bem-sucedida, masis_lock_free()
retornou falso.
Eu acho que o gcc 7.3 e sua implementação de biblioteca padrão estão bem. Pode ser apenas um problema de configuração do meu lado. De fato, eu não fiz nenhuma configuração. Eu simplesmente instalei o MacPorts gcc e pronto. Alguma idéia do que posso estar perdendo?