Articles of c ++ 11

elisão de cópia efeito colateral visível

Considere este código: #include using namespace std; struct Foo { public: int _a{}; Foo(int a) : _a{a} { std::cout << "ctor" << std::endl; } Foo(const Foo &) { std::cout << "copy" << std::endl; } }; int main () { Foo a{10}; Foo b = 10; std::cout << b._a << std::endl; } Quando eu compilo com […]

É permitido usar decltype em std :: declval (a function em si, não o resultado de chamá-lo)?

O código a seguir aciona uma asserção estática em libstdc ++: #include using t = decltype(std::declval); Deveria? Motivação para esta questão: A implementação de declval seguir proposta por Eric Niebler (que aparentemente é uma otimização de tempo de compilation) template _Up __declval(int); template _Tp __declval(long); template auto declval() noexcept -> decltype(__declval(0)); Seria questionável se um […]

Existe uma maneira mais curta para inicializar um QByteArray?

No meu programa eu trabalho muito com comunicação serial, então o QByteArray é usado com muita frequência. Eu queria saber se havia uma maneira mais curta para inicializar um QByteArray com bytes específicos que: const char test_data[] = { static_cast(0xB1), static_cast(0xB2), 0x5, static_cast(0xFF), static_cast(0xEE), static_cast(0xEE), static_cast(0x0)}; // Note QByteArray should be able to hold 0 […]

Abordagem de usar um std :: atomic comparado a std :: condition_variable wrt pausando & resumindo um std :: thread em C ++

Esta é uma questão separada, mas relacionada à pergunta anterior que fiz aqui Eu estou usando um std::thread no meu código C++ para pesquisar constantemente por alguns dados e adicioná-lo a um buffer. Eu uso um C++ lambda para iniciar o segmento assim: StartMyThread() { thread_running = true; the_thread = std::thread { [this] { while(thread_running) […]

Regex C ++ da compatibilidade do Visual Studio 2013

Este é um follow-up em uma longa jornada onde eu puxei meu cabelo para extrair texto da análise de arquivos shader GLSL usando regex em C ++ 11 com o VS 2013 rc5. Aqui está o resultado intencional: Editor de trabalho em tempo real aqui! O equivalente em C ++ se parece com isso, que […]

Use listas de inicializadores de chaves em um modelo variádico?

Eu estou tentando usar listas de inicializadores de chaves em uma function de modelo variadic, mas o compilador reclama … estou pedindo muito ou fiz algo errado? Isso é melhor demonstrado pelo exemplo: struct Bracy { Bracy(int i, int j) { } }; struct Test { void consumeOne(int i) { } void consumeOne(const Bracy & […]

Otimizações std :: move e RVO

Eu li recentemente como std::move pode acelerar o código apenas movendo os valores em vez de copiá-los. Então eu fiz um programa de teste para comparar a velocidade usando std::vector . O código: #include #include #include #ifdef WIN32 #include #else #include #include #endif #undef max // Returns the amount of milliseconds elapsed since the UNIX […]

Inicialização de membro estático em uma class de modelo

Eu preciso inicializar um bool estático dentro de uma class de modelo e tentei fazer assim. A única diferença que eu posso ver é que eu tenho uma restrição no parâmetro de tipo T, mas isso causa um erro de compilation, por quê? Como posso resolver isso? Código é o seguinte: template<class T, class = […]

Como obter o iterador não-constante

std::map dict; … auto pmax = dict.begin(); // here i get const iterator Posso “indicar explicitamente” que o valor obtido é um tipo não constante?

Passando um encerramento como um parâmetro para um construtor c ++

No código abaixo, eu gostaria de me livrar dos construtores estranhos que usam vários tipos de pointers de function, e as listas de parâmetros que precisam ser salvas (junto com todas as variables ​​de membro que são necessárias para manter tudo isso), e em vez disso, use um encerramento para fazer tudo isso, deixando o […]