Resultados da pesquisa a pedido "language-lawyer"
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 ...
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&{ ...
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, ...
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 ...
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 ...
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))) { ...
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 ...
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 ...
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 é ...
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 ...