Articles of c ++ 11

A palavra-chave volátil C ++ introduz uma barreira de memory?

Eu entendo que volatile informa ao compilador que o valor pode ser alterado, mas para realizar essa funcionalidade, o compilador precisa introduzir uma cerca de memory para fazê-lo funcionar? Pelo que entendi, a seqüência de operações em objects voláteis não pode ser reordenada e deve ser preservada. Isso parece implicar que algumas cercas de memory […]

Qual é o propósito da palavra-chave “final” no C ++ 11 para funções?

Qual é o objective da palavra-chave final no C ++ 11 para funções? Eu entendo que impede a substituição de funções por classs derivadas, mas se este for o caso, então não é suficiente para declarar como não virtuais suas funções final ? Há outra coisa que estou sentindo falta aqui?

Qual é a diferença entre um vazio e um nulo std :: shared_ptr em C ++?

A página cplusplus.com shared_ptr chama uma distinção entre um std::shared_ptr vazio e um shared_ptr nulo . A página cppreference.com não chama explicitamente a distinção, mas usa “empty” e a comparação com nullptr em sua descrição do comportamento std::shared_ptr . Existe uma diferença entre um shared_ptr vazio e um nulo? Existe algum caso de uso para […]

C ++ 11: Substitua todos os pointers brutos não-proprietários por std :: shared_ptr ()?

Com o advento de std::unique_ptr , o std::auto_ptr pode finalmente ser colocado para descansar. Então, nos últimos dias, mudei meu código para usar pointers inteligentes e para eliminar todas as delete do meu código. Embora valgrind diga que meu código é limpo na memory, a riqueza semântica dos pointers inteligentes resultará em código mais limpo […]

Uma class enum pode ser convertida no tipo subjacente?

Existe uma maneira de converter um campo de enum class para o tipo subjacente? Eu pensei que isso seria automático, mas aparentemente não. enum class my_fields : unsigned { field = 1 }; unsigned a = my_fields::field; Essa tarefa está sendo rejeitada pelo GCC. error: cannot convert ‘my_fields’ to ‘unsigned int’ in assignment .

Usando bibliotecas compiladas libstdc ++ com clang ++ -stdlib = libc ++

Eu estou trabalhando em C ++ no Mac OS X (10.8.2) e eu recentemente surgiu a necessidade de usar os resources do C ++ 11, que estão disponíveis através do compilador clang ++ usando o libl ++ stdlib. No entanto, eu também preciso usar alguma biblioteca legada compilada e vinculada ao libstdc ++ (vindo do […]

O uso do ‘auto’ do C ++ 11 pode melhorar o desempenho?

Eu posso ver porque o tipo auto em C ++ 11 melhora a correção e manutenção. Eu li que também pode melhorar o desempenho ( quase sempre automático por Herb Sutter), mas sinto falta de uma boa explicação. Como pode melhorar o desempenho auto ? Alguém pode dar um exemplo?

diferenças shared_ptr e weak_ptr

Estou lendo o livro “Effective C ++” de Scott Meyers. Foi mencionado que existem tr1::shared_ptr e tr1::weak_ptr agem como pointers embutidos, mas eles rastreiam quantos tr1::shared_ptrs apontam para um object. Isso é conhecido como contagem de referência. Isso funciona bem na prevenção de vazamentos de resources em estruturas de dados acíclicas, mas se dois ou […]

Quais diferenças, se houver, entre C ++ 03 e C ++ 11 podem ser detectadas em tempo de execução?

É possível escrever uma function que, quando compilada com um compilador C, retornará 0 e, quando compilada com um compilador C ++, retornará 1 (a sululização trivial com #ifdef __cplusplus não é interessante). Por exemplo: int isCPP() { return sizeof(char) == sizeof ‘c’; } Claro, o acima irá funcionar apenas se sizeof (char) não é […]

A boot uniforme falha ao copiar quando o object não possui membros de dados

Ao atualizar alguns códigos para usar uma boot uniforme, pensei que seria um substituto moderno para o estilo de parênteses agora “estilo antigo”. Eu sei que isso nem sempre é o caso (exemplo óbvio, vector ), mas eu tropecei em outra diferença que não entendo. class Object { public: Object() = default; Object(const Object&) = […]