Resultados da pesquisa a pedido "language-lawyer"

1 a resposta

Estender a vida útil do temporário através de rvalue data-member trabalha com agregado, mas não com o construtor, por que?

Eu encontrei o seguinte esquema para prolongar uma vida temporária de obras, não sei se deveria, mas funciona. struct S { std::vector<int>&& vec; }; int main() { S s1{std::vector<int>(5)}; // construct with temporary std::cout << s1.vec[0] << ...

1 a resposta

Estendendo a vida útil temporária, funciona com agregados com escopo de bloco, mas não através de `novo`; porque?

Nota: Esta pergunta foi originalmente feita comoum comentário [https://stackoverflow.com/questions/23892018/extending-temporarys-lifetime-through-rvalue-data-member-works-with-aggregate/23965233#comment36922467_23965233] porRyan Haining ...

4 a resposta

O std :: move é realmente necessário na lista de inicialização do construtor para membros pesados transmitidos por valor?

Recentemente, li um exemplo decppreference ... / vector / emplace_back [http://en.cppreference.com/w/cpp/container/vector/emplace_back]: struct President { std::string name; std::string country; int year; President(std::string p_name, ...

2 a resposta

Quando é aplicada a ADL?

Existem 3 exemplos: EU. typedef int foo; namespace B { struct S { operator int(){ return 24; } }; int foo(B::S s){ return 0; } } int main() { int t=foo(B::S()); //24, ADL does not apply }II namespace B { struct S { operator int(){ return 24; } ...

2 a resposta

Por que um parâmetro de modelo não permite 'typename' após a lista de parâmetros

Typename do modelo de modelo?Ao usarmodelo modelosintaxe como emtemplate <template <typename> class T>, é necessário usar a palavra-chaveclass, como usandotypename dá um erro ao longo das linhas de: erro: o parâmetro do modelo requer 'classe' ...

3 a resposta

Membro de dados `static constexpr auto` inicializado com enum sem nome

Eu estava trabalhando em um projeto C ++ 11 usando apenasclang++-3.4e decidiu compilar usandog++-4.8.2 caso houvesse discrepâncias nos erros produzidos. Acontece que o g ++ rejeita algum código que o clang ++ aceite. Eu reduzi o problema ao MWE ...

1 a resposta

Chamada de pseudo-destruidor não destrói um objeto

Considere o seguinte código: #include <iostream> typedef int t; t a=42; int main() { a.t::~t(); std::cout << a; //42 }Eu sou esperado quea será destruído. Mas não é verdade, por quê? Como essa chamada de pseudo-destruidor será destruída no objeto?

1 a resposta

Tipo incompleto no especificador de nome aninhado

Tentei usar o tipo incompleto no especificador de nome aninhado da seguinte maneira: class A; int b= A::c; // error: incomplete type ‘A’ used in nested name specifier class A { static const int c=5; };Não há nada a dizer sobre o esboço de ...

1 a resposta

Um `char 'simples pode ter valores de interceptação?

LEIA-ME A "valor da armadilha"ou"representação de armadilha" para o tipoT, é uma combinação de bits (do armazenamento subjacente) que gera um valor inválido deT. Tentar interpretar a representação de um valor inválido fará com quecomportamento ...

2 a resposta

Quando os parênteses extras têm efeito, além da precedência do operador?

Os parênteses em C ++ são usados em muitos lugares: p. em chamadas de função e expressões de agrupamento para substituir a precedência do operador.Além de parênteses extras ilegais(como em torno das listas de argumentos de chamada de função), uma ...