Resultados da pesquisa a pedido "language-lawyer"

4 a resposta

Esse código em C se enquadra na categoria Comportamento indefinido?

a é uma matriz,foo é uma função ei é umint. a[++i] = foo(a[i-1], a[i]);O código acima teria umComportamento indefinido? Os índices da matriz++i, i-1 ei, são garantidos para estar no intervalo da matriz.

1 a resposta

Os bytes subjacentes de um objeto podem mudar, se o valor não for alterado?

Os bytes subjacentes de um objeto podem mudar, se o valor em si não for alterado? Então, por exemplo, esse trecho de código pode ser "diferente"? int a = 0; char b[sizeof(int)]; memcpy(b, &a, sizeof(int)); if (memcmp(b, &a, sizeof(int)) { ...

1 a resposta

constexpr: definição e declaração para membros constexpr

Se eu quiser usar algumas coisas de conveniência, comomake_array Não tenho chance de declarar minha matriz primeiro e, posteriormente, fazer a definição como feita em tempos "anteriores", porque o tipo de meu var não está disponível antes da ...

1 a resposta

Por que o gcc e o clang produzem resultados diferentes para este programa? (operador de conversão x construtor)

programa: #include <stdio.h> struct bar_t { int value; template<typename T> bar_t (const T& t) : value { t } {} // edit: You can uncomment these if your compiler supports // guaranteed copy elision (c++17). Either way, it // doesn't affect the ...

2 a resposta

Uma união ou estrutura permite a atribuição de uma instância não inicializada?

Esta pergunta é sobre a definição ou não de atribuir uma variável automática não-inicializada a outra do mesmo tipo. Considerar typedef struct { int s1; int s2; } Foo; typedef union { int u1; Foo u2; } Bar; int main() { { int a; int b = a; // ...

1 a resposta

Colocação nova e atribuição de classe com membro const

Por que esse comportamento indefinido? struct s { const int id; // <-- const member s(int id): id(id) {} s& operator =(const s& m) { return *new(this) s(m); // <-- undefined behavior? } };(Citação do padrão seria bom). Esta questão surgiu ...

2 a resposta

Fundição de referência r-value e materialização temporária

A saída para o código abaixo produz: void doit(const T1 &, const T2 &) [T1 = unsigned long, T2 = int] t1 == t2 t1 == (T1)t2 t1 != (T1&)t2 t1 == (T1&&)t2Eu entendo que ot1 == t2 caso é simplesmente uma promoção integral. O segundo casot1 == ...

1 a resposta

Modelo de memória C ++: as cargas seq_cst são sincronizadas com as lojas seq_cst?

No modelo de memória C ++, há uma ordem total em todas as cargas e armazenamentos de todas as operações sequencialmente consistentes. Eu estou querendo saber como isso interage com operações que têm outros pedidos de memória que são seqüenciados ...

1 a resposta

Os parâmetros de modelo não-tipo no c ++ 17 podem ser decltype (auto)?

Eu descobri que o gcc e o clang permitem usardecltype(auto) na cláusula de tipo de parâmetro do modelo não-tipo. Por exemplo.: template <decltype(auto)> struct X {}; int foo ; int main() { X<(foo)> x; static_cast<void>(x); }[demonstração ao vivo ...

2 a resposta

O padrão C exige que o tamanho de uma matriz de n elementos seja n vezes o tamanho de um elemento?

O padrão C exige que o tamanho de uma matriz den elementos sejamn vezes o tamanho de um elemento, seja por declaração explícita ou por dedução lógica rigorosa de seus requisitos? Por exemplo, poderiaint (*x)[5] = malloc(5 * sizeof **x); falha ao ...