Articles of c ++ c + + 11

Pacote de parâmetros do modelo de function não no final da lista de parâmetros

O código a seguir compila e executa ok. void foo() { } template void foo(T x, Args… args) { cout << x << endl; foo(args…); } // inside main() foo(1,1,1); Este outro código não compila: void foo() { } template void foo(Args… args, T x) { foo(args…); cout << x << endl; } // inside […]

Endereços de memory estável usando um contêiner padrão (como vetor, lista, fila, etc.)

Nota: Eu não percebi que os pointers devem ser considerados iteradores, portanto, pode-se razoavelmente argumentar que o que eu chamo de falta de estabilidade do endereço de memory deve ser chamado de invalidação do iterador . Por favor, leia o duplicado para uma versão mais abstrata e sólida da minha pergunta. Minha pergunta está relacionada […]

sfinae na function de membro definida fora do corpo da class

Tipo de continuação da minha pergunta anterior . O que eu tenho é um monte de funções que formam uma cadeia de dependência sfinae assim (deixe a notação “A -> B” significa que a existência de A depende da existência de B): S::f_base -> S::f -> ns::f_ -> f -> T::f onde T é o […]

A dedução de modelo falha com o argumento após o pacote de parâmetros

Eu tenho essa function: template void f(Args… args, int last) { } A dedução de modelo falha se eu a chamar sem parâmetros de modelo explícitos: f(2, 2); // candidate expects 1 argument, 2 provided Mas fornecer os parâmetros explícitos do modelo para o pacote de parâmetros funciona: f(2, 2); // compiles fine Mesmo que […]

Retorna um valor dependendo do tipo

Considere o seguinte exemplo template class MyClass { public: double getValue() { // if “Type == void” return _x, if “Type != void” return _y return (/* SOMETHING */) ? (_x) : (_y); } protected: double _x; static const double _y; }; Qual poderia ser a condição /* SOMETHING */ ? Eu quero retornar _x […]

Como faço para usar um elemento de matriz estática como um índice para uma matriz estática de objects que são de instanciações de modelo diferentes

Como faço para usar um elemento de matriz estática como um índice para uma matriz estática de objects que são de instanciações de modelo diferentes? Eu estou preso recebendo o erro óbvio do compilador: argumento de modelo inválido para ‘N’, expressão constante de tempo de compilation esperado. Não sei se há uma resposta não-c ++ […]

‘Congelando’ uma expressão

Eu tenho uma expressão em C ++ que desejo “congelar”. Por isso, quero dizer que tenho syntax como o seguinte: take x*x with x in container … onde o … indica mais syntax (não útil para este problema). No entanto, se eu tentar compilar isso, não importa quais traduções de pré-processador eu usei para ‘tomar’ […]

Traços de function de membro

Eu estou escrevendo uma class de modelo que envolve funções de membro para reduzir algumas chamadas – se alguma condição for verdadeira, a function de membro não precisa ser chamada. A assinatura seria algo parecido com isto template class MemberWrapper; E eu posso especializá-lo assim: template class MemberWrapper{}; Eu também gostaria de restringir o número […]

Por que o construtor implicitamente gerado (et al.) Seria mais eficiente do que um construtor definido pelo usuário (trivial)?

Eu li este artigo de D. Kalev esta manhã sobre o novo recurso c ++ 11 “funções padrão e excluídas”, e não consigo entender a parte sobre o desempenho, a saber: A definição manual de uma function de membro especial (mesmo que seja trivial) é geralmente menos eficiente do que uma definida implicitamente. Ao procurar […]

Como acessar “class enum” sem nome encapsulado dentro de uma class?

class A { public: enum class { HELLO, WORLD }; }; Sabendo que, dentro de uma class , declarar um enum simples (em vez de enum class ) é uma idéia melhor, porque já está typescript com a identificação de class . Mas ainda acima declaração é uma assinatura válida C++0x . Agora como acessar […]