Resultados da pesquisa a pedido "language-lawyer"

3 a resposta

"Construindo" um objeto trivialmente copiável com memcpy

Em C ++, esse código está correto? #include <cstdlib> #include <cstring> struct T // trivially copyable type { int x, y; }; int main() { void *buf = std::malloc( sizeof(T) ); if ( !buf ) return 0; T a{}; std::memcpy(buf, &a, sizeof a); T *b = ...

2 a resposta

static_assert depende do parâmetro do modelo não-tipo (comportamento diferente no gcc e no clang)

template <int answer> struct Hitchhiker { static_assert(sizeof(answer) != sizeof(answer), "Invalid answer"); }; template <> struct Hitchhiker<42> {};Ao tentar desativar a instanciação geral do modelo comstatic_assert Eu descobri que o código ...

5 a resposta

O que um compilador verifica se há código de modelo não instanciado?

Por exemplo, o seguinte código compila com gcc-4.9 e clang-602 class Base { public: static void foo() {} void badfoo(int i) {} }; template <typename T> class Derived : public Base { public: void bar() { Base::foo(); } void badbar() { ...

2 a resposta

Problema com std :: reference_wrapper

O problema é claro com o seguinte código: #include <functional> #include <iostream> #include <vector> int main() { //std::vector<int> a, b; int a = 0, b = 0; auto refa = std::ref(a); auto refb = std::ref(b); std::cout << (refa < refb) << '\n'; ...

3 a resposta

clang bug? amigo da classe de modelo com namespace

O código a seguir que não é compilado no clang, mas no gcc e no VS: template<typename T> class bar; namespace NS { template<typename T> class foo { foo() {} template<typename U> friend class bar; }; } template<typename R> class bar { public: ...

4 a resposta

Por que a inferência de tipo genérico do Java 8 seleciona essa sobrecarga?

Considere o seguinte programa: public class GenericTypeInference { public static void main(String[] args) { print(new SillyGenericWrapper().get()); } private static void print(Object object) { System.out.println("Object"); } private static void ...

2 a resposta

inicialização de membro de dados não estático com nova expressão

Considere o seguinte código: #include <map> template <typename T> struct X { std::map<int, T>* storage = new std::map<int, T>(); }; int main() { X<int> x; }Isso compila emclang 3.6.0 [http://coliru.stacked-crooked.com/a/b8d550fded9eb392], mas ...

1 a resposta

Qual é a definição de "array" em C?

O padrão definetipo de matriz meticulosamente, mas não vejo nenhuma definição paramatriz. Poderíamos dizer "objeto do tipo matriz", no entanto, isso não pode estar correto como objetos sem tipo (por exemplo, espaço alocado pormalloc) é ...

2 a resposta

O std :: washder pode ser usado para converter um ponteiro de objeto em seu ponteiro de matriz anexo?

O atual rascunho do padrão (e presumivelmente o C ++ 17) diz em[base.compound / 4] [http://eel.is/c++draft/basic.compound#4]: [Nota: Um objeto de matriz e seu primeiro elemento não são interconversíveis por ponteiro, mesmo que tenham o mesmo ...

3 a resposta

Por que posso usar gets () em gcc -std = c11?

ogets() A função foi removida do idioma C. Nenhuma função existe no padrão. No entanto, eu compilo o seguinte código: #include <stdio.h> int main (void) { (void) gets (NULL); }usando gcc -std=c11 -pedantic-errors -Wall -Wextrae compila sem dar ...