Articles of c ++ c ++ 11

Por que devo evitar std :: enable_if em assinaturas de function

Scott Meyers postou conteúdo e status de seu próximo livro EC ++ 11. Ele escreveu que um item no livro poderia ser “Evitar std::enable_if em assinaturas de function” . std::enable_if pode ser usado como um argumento de function, como um tipo de retorno ou como um modelo de class ou parâmetro de modelo de function […]

Modelo de function variádica com expansão de pacote não no último parâmetro

Eu estou querendo saber porque o seguinte código não compila: struct S { template S(T…, int); }; S c{0, 0}; Este código não é compilado com o clang e o GCC 4.8. Aqui está o erro com clang: test.cpp:7:3: error: no matching constructor for initialization of ‘S’ S c{0, 0}; ^~~~~~~ test.cpp:4:5: note: candidate constructor […]

Esta recursion infinita é UB?

Em C ++ 11, como um loop infinito sem efeitos colaterais, o programa a seguir é UB: int main() { while (true) {} } O seguinte também é UB? void foo() { foo(); } int main() { foo(); } Citações do padrão para ambos os programas seriam ideais.

C ++ 11: Corrigir a boot do std :: array?

Se eu inicializar um std :: array da seguinte maneira, o compilador me avisa sobre falta de chaves std::array a = {1, 2, 3, 4}; Isso corrige o problema: std::array a = {{1, 2, 3, 4}}; Esta é a mensagem de aviso: missing braces around initializer for ‘std::array::value_type [4] {aka int [4]}’ [-Wmissing-braces] Isso é […]

Como a implementação da Meyers de um Singleton é na verdade um Singleton?

Eu tenho lido muito sobre Singletons, quando devem e não devem ser usados, e como implementá-los com segurança. Eu estou escrevendo em C + + 11, e me deparei com a implementação inicializada de um singleton preguiçoso de Meyer, como visto nesta pergunta. Essa implementação é: static Singleton& instance() { static Singleton s; return s; […]

O C ++ 11 permite a boot em class de membros não estáticos e não-constantes. O que mudou?

Antes do C ++ 11, só podíamos executar a boot na class em membros estáticos constantes do tipo integral ou de enumeração. Stroustrup discute isso em seu C ++ FAQ , dando o seguinte exemplo: class Y { const int c3 = 7; // error: not static static int c4 = 7; // error: not […]

C ++ 11: Eu posso ir de múltiplos args para tuple, mas eu posso ir de tuple para múltiplos args?

Duplicar Possível: Como faço para expandir uma tupla nos argumentos da function de modelo variadico? “Desempacotando” uma tupla para chamar um ponteiro de function correspondente Em modelos C ++ 11, existe uma maneira de usar uma tupla como os argumentos individuais de uma function (possivelmente modelo)? Exemplo: Vamos dizer que eu tenho essa function: void […]

Por que o lambdas pode ser melhor otimizado pelo compilador do que funções simples?

Em seu livro The C++ Standard Library (Second Edition) Nicolai Josuttis afirma que lambdas podem ser melhor otimizados pelo compilador do que funções simples. Além disso, os compiladores de C ++ otimizam os lambdas melhor do que as funções comuns. (Página 213) Por que é que? Eu pensei que quando se trata de inlining não […]

O que exatamente é o “contexto imediato” mencionado no Padrão C ++ 11 para o qual a SFINAE se aplica?

O parágrafo 14.8.2 / 8 da norma C ++ 11 especifica as condições sob as quais uma falha de substituição deve ou não resultar em um erro de compilation “difícil” (fazendo com que a compilation falhe) ou em um erro “soft” que apenas faça com que o compilador descarte um modelo de um conjunto de […]

O que é inheritance de construtor?

Em C ++ 11, o que significa herdar o construtor? Se é o que eu acho que é (o construtor de class base é trazido no escopo da class derivada), quais são suas implicações no meu código? Quais são as aplicações de tal recurso?