Resultados da pesquisa a pedido "compiler-bug"

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 ...

3 a resposta

Tipo de retorno do operador condicional e pesquisa em duas fases

Considere o seguinte trecho: struct Base { }; struct Derived : Base { }; void f(Base &) { std::cout << "f(Base&)\n"; } template <class T = int> void g() { Derived d; f(T{} ? d : d); // 1 } void f(Derived &) { std::cout << "f(Derived&)\n"; } int ...

1 a resposta

Isso é um bug do compilador? Estou fazendo algo errado?

Estou tentando fazer um mapa simples para procurar alguns dados, mas os resultados estão saindo muito estranhos: #include "stdafx.h" #include "atlstr.h" #include <map> enum InputTypes { Manual, Automatic, Assisted, Imported, Offline }; struct ...

3 a resposta

Clang e as expressões de dobra binária - A maldição do pacote de parâmetros vazio

Especificamente Clang 3.6.0, atualmente hospedado por Coliru. Todos esses snippets são chamados de: int main() { foo(); std::cout << "\n----\n"; foo(1, 2, 3); }O código a seguir: template <class... Args> void foo(Args... args) { std::cout << ...

2 a resposta

No modo de liberação, o comportamento do código não é o esperado

O código a seguir gera resultados diferentes nos modos de depuração e versão (usando o Visual Studio 2008): int _tmain(int argc, _TCHAR* argv[]) { for( int i = 0; i < 17; i++ ) { int result = i * 16; if( result > 255 ) { result = 255; } ...

1 a resposta

Por que esse código Haskell é mais lento com -O?

Este pedaço de código Haskell é executadoMuito de mais lento com-O, mas-O deveria estarnão perigoso [https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/options-optimise.html#optimise-pkgs] . Alguém pode me dizer o que aconteceu? Se ...

1 a resposta

O tamanho de aninhado duas vezes pode ser uma expressão dependente?

Notei que o gcc 5.0 rejeita o código a seguir, enquanto o clang 3.6 o aceita. template<int n> struct I { typedef int Type; }; template<typename T> struct A { typedef I<sizeof(sizeof(T))>::Type Type; };Os dois compiladores parecem ...

3 a resposta

Os operadores de conversão explícita são permitidos nas listas de inicializadores preparados?

O código a seguir é compilado com o GCC 4.9.2, mas não com o Clang 3.5.0: #include <string> class Foo { public: explicit operator std::string() const; }; std::string bar{Foo{}}; // Works in g++, fails in clang++ std::string baz(Foo{}); // Works ...

1 a resposta

Possível bug do compilador no MSVC12 (VS2013) com o inicializador designado

Usando a atualização 2 do VS2013, encontrei uma mensagem de erro estranha: // test.c int main(void) { struct foo { int i; float f; }; struct bar { unsigned u; struct foo foo; double d; }; struct foo some_foo = { .i = 1, .f = 2.0 }; struct bar ...

1 a resposta

Inicializador entre chaves ou igual em uniões

Palavras-chave:Como inicializar um membro não-POD na União [https://stackoverflow.com/questions/23004941/how-to-initialize-a-non-pod-member-in-union/23005015] O padrão diz No máximo, um membro de dados não estáticos de uma união pode ter ...