Resultados da pesquisa a pedido "language-lawyer"

2 a resposta

Programa sendo compilado de maneira diferente em três principais compiladores C ++. Qual é o certo?

Como um acompanhamento interessante (embora não seja de grande importância prática) à minha pergunta anterior:Por que o C ++ nos permite colocar o nome da variável entre parênteses ao declarar uma ...

9 a resposta

Por que o comportamento de std :: memcpy seria indefinido para objetos que não são TriviallyCopyable?

Dehttp://en.cppreference.com/w/cpp/string/byte/memcpy [http://en.cppreference.com/w/cpp/string/byte/memcpy]: Se os objetos não estiveremTriviallyCopyable [http://en.cppreference.com/w/cpp/concept/TriviallyCopyable](por exemplo, escalares, ...

6 a resposta

Isso evita UB

Esta questão é mais acadêmica, visto que não há razão válida para escrever sua própriaoffsetof macro mais. No entanto, eu vi essa implementação caseira aparecer aqui e ali: #define offsetof(s, m) ((size_t) &(((s *)0)->m))Que é, tecnicamente ...

9 a resposta

O incremento de um ponteiro nulo está bem definido?

Existem muitos exemplos de comportamento indefinido / não especificado ao fazer aritmética de ponteiros - os ponteiros precisam apontar para dentro da mesma matriz (ou um após o final) ou dentro do mesmo objeto, restrições sobre quando você pode ...

1 a resposta

Uma classe com o construtor de cópia excluído é trivialmente copiável?

Esta classe é: class A { public: A() = default; A(const A&) = delete; };trivialmente copiável? (Pelo menos clang parece pensar assim (viver [http://coliru.stacked-crooked.com/a/3bf899de8625279d]))) Em particular, seria A a,b; std::memcpy(&a, ...

1 a resposta

Um comportamento indefinido pode seguir um getc () alterar o comportamento do programa se o getc () sair via SIGINT

Sob interpretações modernas de "Comportamento indefinido", um compilador tem o direito de assumir que nenhuma cadeia de eventos que tornaria "inevitável" um comportamento indefinido ocorrerá e pode eliminar o código que seria aplicável apenas nos ...

1 a resposta

Std :: abs (0u) está mal formado?

Dado o seguinte programa: #include <cmath> int main() { std::abs(0u) ; }gcc eclang discordo se isso está mal formado. Usandogcc comlibstdc++ o código cria sem erro ou aviso (veja ao vivo [http://melpon.org/wandbox/permlink/5sASqwTFEidudt0S]), ...

1 a resposta

Pesquisa de nome ambígua com diretiva usando

Não é permitido colocar um espaço para nome e uma classe com o mesmo nome em uma região declarativa, ou seja, namespace A {} class A{};está mal formado [http://coliru.stacked-crooked.com/a/5b837907b4d0609c](ver §3.3.1 / 4). No entanto, pode-se ...

1 a resposta

Não consigo entender a declaração nº 3 no exemplo de [basic.link] / 6 C ++ 14

[basic.link] / 6 O nome de uma função declarada no escopo do bloco e o nome de uma variável declarada pelo escopo do blocoextern declaração tem ligação. Se houver umvisível declaração de uma entidade com vínculo com o mesmo nome e tipo, ...

1 a resposta

Aviso C ++ 14: muitos cabeçalhos de modelo para a variável (deve ser 0)

Ao experimentar o recente compilador g ++ - 5, escrevi abaixo a declaração em um arquivo: template<T> T a; template<> int a = 1;O que resulta em: aviso: muitos cabeçalhos de modelo paraa (deve ser 0) Também efetivamente, ele realmente não se ...