Resultados da pesquisa a pedido "language-lawyer"

3 a resposta

Um ponteiro com o endereço e o tipo corretos ainda é sempre um ponteiro válido desde o C ++ 17?

(Em referência aesta pergunta e resposta [https://stackoverflow.com/questions/48058545/are-there-any-guarantees-for-unions-that-contain-a-wrapped-type-and-the-type-its/48060029#48060029] .) Antes do padrão C ++ 17, a seguinte frase foi incluída ...

3 a resposta

É 1 << 31 bem definido em C quando sizeof (int) == 4

De acordo com a resposta paraestas perguntas [https://stackoverflow.com/questions/3784996/why-does-left-shift-operation-invoke-undefined-behaviour-when-the-left-side-oper] : O resultado deE1 << E2éE1deslocado para a esquerdaE2posições de bit; ...

2 a resposta

Diferença entre a análise de void () e int ()

Depois de ler sobre a análise mais irritante, experimentei um pouco e encontrei este programa. Existem duas linhas muito semelhantes. Um deles gera avisos em g ++ 7 e clang ++ - 3.9, outro não. int main() { void(); // no warning int(); // ...

5 a resposta

É legal alias uma estrutura e uma matriz?

Aritmética de ponteiro entre membros consecutivos do mesmo tipo em uma estrutura costumava ser uma prática comum, enquanto a aritmética de ponteiro é válida apenas dentro de uma matriz. Em C ++, seria explicitamente comportamento indefinido ...

2 a resposta

Estruturas de variáveis do mesmo layout de tipo são compatíveis com uma estrutura que contém uma matriz desse tipo?

Essas duas estruturas são compatíveis com o layout? struct One { float x, y, z; }; struct Two { float c[3]; };Ambos contêm 3 carros alegóricos; portanto, de certa forma, essa descrição pode ser considerada verdadeira (da N3797): 16 Dois tipos ...

1 a resposta

Construtor padrão explícito

Esse código compila bem com o GCC 5.X, MSVC, mas o GCC 6.X fornece um erro: "converter para 'a' da lista de inicializadores usaria o construtor explícito 'a :: a ()'"clang"construtor escolhido é explícito na inicialização da ...

1 a resposta

O C ++ 17 proíbe a remoção de cópias em um caso em que o C ++ 14 o permitiu?

Considere o seguinte: struct X { X() {} X(X&&) { puts("move"); } }; X x = X();No C ++ 14, a movimentação pode ser elidida, apesar do construtor da movimentação ter efeitos colaterais, graças a [class.copy] / 31, Essa elisão de operações de ...

1 a resposta

Usando std :: washder para obter um ponteiro para um membro do objeto ativo de um ponteiro para um objeto inativo?

Esta pergunta segue esta1 [https://stackoverflow.com/questions/48188737/is-pointer-arithmetic-on-inactive-member-of-a-union-ub] Vamos considerar este código de exemplo: struct sso { union{ struct { char* ptr; char size_r[8]; } large_str; ...

3 a resposta

O ponteiro é aritmético no membro inativo de uma união UB?

Vamos considerar este código de exemplo: struct sso { union { struct { char* ptr; char size_r[8]; } large_str; char short_str[16]; }; const char* get_tag_ptr() const { return short_str+15; } };No[basic.expr] ...

1 a resposta

A metaprogramação com estado está mal formada (ainda)?

Uma das minhas invenções mais amadas / más que tive a sorte de encontrar é a contador constexpr [http://b.atch.se/posts/constexpr-counter/], também conhecido como metaprogramação com estado. Como mencionado no post, parece legal no C ++ 14, e eu ...