Resultados da pesquisa a pedido "language-lawyer"

1 a resposta

uais alterações no C ++ fizeram a inicialização de cópias funcionar para a classe com construtor explícit

Considere este código: struct X{ explicit X(){} explicit X(const X&){} }; void foo(X a = X()){} int main(){}sando o padrão C ++ 14, GCC 7.1 e clang 4.0 rejeita [https,://godbolt.org/g/r8u5gO] o código, o que eu esperava. No entanto, usando C ...

1 a resposta

Lambda como uma variável de modelo

Durante alguma investigação relacionada ao "Modelo variável", descobri um comportamento de código estranho para mim. O padrão diz alguma coisa sobre esse comportamento? //Header.h #pragma once template<typename T> auto myvar = []() -> T&{ ...

7 a resposta

Pode calloc () alocar mais de SIZE_MAX no total?

Emma recente revisão de códi [//codereview.stackexchange.com/a/204977], alegou-se que m sistemas selecionados,calloc() pode alocar mais deSIZE_MAX total de bytes, enquantomalloc() é limitado Minha afirmação é que isso está errado, ...

1 a resposta

Nenhum diagnóstico do compilador quando o identificador em uma captura simples aparece como o ID do declarador de um parâmetro

A seção sobre lambda captura ([expr.prim.lambda.capture] / 5 [http://eel.is/c++draft/expr.prim.lambda#capture-5]) afirma que Se um identificador em uma captura simples aparecer como o ID do declarador de um parâmetro da cláusula ...

1 a resposta

União de tipos compatíveis com layout

Veja este código: struct A { short s; int i; }; struct B { short s; int i; }; union U { A a; B b; }; int fn() { U u; u.a.i = 1; return u.b.i; } É garantido quefn() retorna1? Nota: esta é uma pergunta de acompanhamento ...

1 a resposta

Isso é permitido dentro de uma especificação noexcep

Tenho algum código que exija que eu use*this, mas quero que não seja amigável: struct foo; // Would actually be something with conditional noexcept void do_something(foo&); struct foo { void fn() noexcept(noexcept(::do_something(*this))) { ...

1 a resposta

Implementing a std :: vector como container sem comportamento indefinido

Pode surpreender alguns codificadores e, por mais surpreendente que seja, não é possível implementarstd::vector sem suporte não padrão dos compiladores. O problema reside essencialmente na capacidade de executar aritmética de ponteiro em uma ...

2 a resposta

Template Falha na dedução de argumentos e parâmetros de função / incompatibilidade de argumentos

Considere o seguinte programa: template <class T> struct A { using X = typename T::X; }; template <class T, typename A<T>::X* = nullptr> void f(T, int); void f(...); template <class T> void g(T, int, typename A<T>::X* = nullptr); // # void ...

2 a resposta

Qual é o objetivo dos tipos compatíveis com layout?

O padrão define [http://eel.is/c++draft/basic.types#11] quando dois tipos são compatível com layout. Mas não vejo em nenhum lugar do padrão quais são as consequências quando dois tipos são compatível com layout. Parece que compatível com layout é ...

2 a resposta

Podemos acessar o membro de um objeto de tipo de classe inexistent

No padrão c ++, em [basic.lval] /11. [http://eel.is/c++draft/basic.lval#11.6] diz: Se um programa tentar acessar o valor armazenado de um objeto por meio de um valor gl de outro que não seja um dos seguintes tipos, o comportamento ...