Resultados da pesquisa a pedido "language-lawyer"
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 ...
É 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; ...
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(); // ...
É 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 ...
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 ...
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 ...
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 ...
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; ...
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] ...
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 ...