Resultados da pesquisa a pedido "language-lawyer"
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 ...
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, ...
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 ...
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 ...
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, ...
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 ...
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]), ...
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 ...
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, ...
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 ...