Resultados da pesquisa a pedido "language-lawyer"

1 a resposta

A inicialização de um declarador de ponteiro com um comportamento indefinido de ponteiro inválido?

Em resumo, o código a seguir é considerado como tendo comportamento indefinido? int main() { int *p = <some invalid pointer value>; }Para um exemplo de compilação, use o seguinte código: int main() { int *p = new int; delete p; // Now p has an ...

1 a resposta

A ordem de inicialização das variáveis de modelo constexpr (isto é, inicializadas constantemente) é garantida?

Dept.cppreference.com/w/cpp/language/initialization [http://en.cppreference.com/w/cpp/language/initialization]: Inicialização dinâmica não ordenada, que[sic] aplica-se apenas a membros de dados estáticos do modelo de classe (estático / ...

3 a resposta

O C99 / C11 restringe o qualificador de tipo implica algo para funções sem definição?

Suponha que tenhamos uma declaração de função para a qual não temos acesso à sua definição: void f(int * restrict p, int * restrict q, int * restrict r);Como não sabemos como os ponteiros serão acessados, não podemos saber se uma chamada ...

2 a resposta

É uma violação estrita de aliasing alias a struct como seu primeiro membro?

Código de amostra: struct S { int x; }; int func() { S s{2}; return (int &)s; // Equivalent to *reinterpret_cast<int *>(&s) }Eu acredito que isso é comum e considerado aceitável. O padrão garante que não haja preenchimento inicial na estrutura. ...

1 a resposta

Acesso à variável constexpr dentro da expressão lambda sem capturar

No exemplo a seguir, eu posso acessar oconstexpr variávelx de dentro do lambday sem capturá-lo explicitamente. Isso não é possível sex não é declarado comoconstexpr. Existem regras especiais que se aplicam aconstexpr para capturar? int foo(auto ...

2 a resposta

Tipo incompleto não é permitido em uma classe, mas é permitido em um modelo de classe

O código a seguir é inválido: struct foo { struct bar; bar x; // error: field x has incomplete type struct bar{ int value{42}; }; }; int main() { return foo{}.x.value; }Isso é bem claro, poisfoo::bar é considerado incompleto no ponto em ...

2 a resposta

Elenco incorreto - é o elenco ou o uso que é um comportamento indefinido

Se eu faço uma conversão de um tipo Base para um tipo Derivado, mas o tipo Base não é uma instância do tipo derivado, mas só uso o resultado se for, recebo um comportamento indefinido? Difícil de entender o que estou perguntando? dê uma olhada ...

4 a resposta

Declarações / definições como declarações em C e C ++

Fiquei confuso quando isso não seria compilado em C: int main() { for (int i = 0; i < 4; ++i) int a = 5; // A dependent statement may not be declaration return 0; }Estou acostumado a C ++, onde isso irá compilar. Fiquei pasmo por um tempo até me ...

6 a resposta

Argc pode ser zero em um sistema POSIX?

Dada a definição padrão para o programa principal: int main(int argc, char *argv[]) { ... }Em que circunstâncias podeargc ser zero em um sistema POSIX?

1 a resposta

A especialização explícita no escopo que não é de namespace não é compilada no GCC

O código a seguir é compilado no Clang, mas não no GCC: template<typename T> struct Widget { template<typename U> void foo(U) { } template<> void foo(int*) { } };De acordo com o padrão C ++ ([temp.expl.spec], parágrafo 2): Uma especialização ...