Articles of c ++ faq

Especialização em modelos de membros específicos?

É possível especializar membros específicos de uma class de modelo? Algo como: template struct X { void Specialized(); }; template void X::Specialized() { … } template void X::Specialized() { … } Claro, esse código não é válido.

O método std :: list :: remove destrói a chamada de cada elemento removido?

std::list lst; //…. Node * node = /* get from somewhere pointer on my node */; lst.remove(node); O std :: list :: remove método de destruição de chamada (e memory livre) de cada elemento removido? Se sim, como posso evitar isso?

Por que o `std :: move` é chamado` std :: move`?

A function C ++ 11 std::move(x) realmente não move nada. É apenas um casting para o valor r. Por que isso foi feito? Isso não é enganoso?

Resultado de ponto flutuante diferente com otimização ativada – bug do compilador?

O código abaixo funciona no Visual Studio 2008 com e sem otimização. Mas só funciona em g ++ sem otimização (O0). #include #include #include double round(double v, double digit) { double pow = std::pow(10.0, digit); double t = v * pow; //std::cout << "t:" << t << std::endl; double r = std::floor(t + 0.5); //std::cout […]

Por que uma class de modelo derivada não tem access a identificadores de uma class de modelo base?

Considerar: template class Base { public: static const bool ZEROFILL = true; static const bool NO_ZEROFILL = false; } template class Derived : public Base { public: Derived( bool initZero = NO_ZEROFILL ); // NO_ZEROFILL is not visible ~Derived(); } Eu não sou capaz de compilar isso com GCC g ++ 3.4.4 (cygwin). Antes de […]

Quais são as vantagens de usar nullptr?

Este pedaço de código conceitualmente faz a mesma coisa para os três pointers (boot de ponteiro seguro): int* p1 = nullptr; int* p2 = NULL; int* p3 = 0; E então, quais são as vantagens de atribuir pointers nullptr ao atribuir-lhes os valores NULL ou 0 ?

Como fazer com que o IOStream funcione melhor?

A maioria dos usuários de C ++ que aprenderam C preferem usar a família de funções printf / scanf mesmo quando estão codificando em C ++. Embora eu admita que eu ache a interface melhor (especialmente formato e localização semelhantes a POSIX), parece que uma grande preocupação é o desempenho. Tomando a olhar para esta […]

Por que o volátil existe?

O que a palavra-chave volatile faz? Em C ++, qual problema isso resolve? No meu caso, eu nunca precisei conscientemente disso.

Por que as funções inline do C ++ estão no header?

NB Esta não é uma questão sobre como usar funções inline ou como elas funcionam, mais por que elas são feitas do jeito que são. A declaração de uma function de membro de class não precisa definir uma function como inline , é apenas a implementação real da function. Por exemplo, no arquivo de header: […]

O que é um “período” e quando devo usar um?

Recentemente eu recebi sugestões para usar span no meu código, ou já vi algumas respostas aqui no site que usam span ‘s – supostamente algum tipo de container. Mas – não consigo encontrar nada parecido na biblioteca padrão do C ++. Então, o que é esse span misterioso span , e por que (ou quando) […]