Articles of gcc

Rejeição de especialização parcial com function como argumento de modelo

Obteve este código que costumava compilar bem com a versão anterior do gcc: template struct HelperWrapper; // […] template struct HelperWrapper { static inline int WrapFuncT(const int) { return 0; // Changed } }; // Unary template struct HelperWrapper { static inline int WrapFuncT(const int) { return 1; // Changed } }; // Binary template […]

Desviar e usar um aviso de chamada como um gancho (convenção de chamada do GCC)

Recentemente trabalhei em funções de desvio (apenas no Linux) e até agora tive grande sucesso. Eu estava desenvolvendo minha própria turma de desvio até encontrar isso . Eu modernizei o código um pouco e o converti em C ++ (como uma class de curso). Esse código é como qualquer outra implementação de desvio, ele substitui […]

Compilando uma biblioteca compartilhada no Linux para direcionar todas as distribuições

Queremos criar uma biblioteca compartilhada (.so) para segmentar todas as distribuições, incluindo as antigas. O código é escrito em C ++ e usa resources do C ++ 11, portanto, o compilador deve ser pelo menos gcc 4.7. Percebemos que, se compilarmos nosso código em uma máquina Linux com o gcc 4.7.2 instalado (por exemplo, Ubuntu […]

Como o gcc implementa o desdobramento de pilha para exceções do C ++ no linux?

Como o gcc implementa o desdobramento de pilha para exceções do C ++ no linux? Em particular, como ele sabe quais destruidores chamar quando desenrola um quadro (ou seja, que tipo de informação é armazenada e onde ela é armazenada)?

Qual é a maneira correta de construir uma biblioteca estática com geração de código de tempo de link no Linux?

Estou vagando, que é o caminho certo para compilar biblioteca estática no Linux com o GCC, de modo que, quando as otimizações de tempo de link (LTO) sejam aplicadas ao executável, a biblioteca possa ser consumida e possivelmente seja obtido um desempenho ideal. Quando biblioteca é compilada somente com -flto o executável não pode ser […]

size_t no XCode

Parece no XCode eu preciso usar std :: size_t em vez de apenas size_t no Visual C ++. Mas isso é uma dor, como eu realmente não quero ter que #include e alterar todos os size_t para std::size_t no meu código … no meu size_t código do Windows_t apenas funciona sem include quaisquer arquivos adicionais. […]

C ++ 11: GCC 4.8 estático thread_local std :: unique_ptr referência indefinida

Eu preciso armazenar um ponteiro exclusivo para cada segmento que será acessado por meio de uma macro. Eu pensei que deveria resolver isso com um objects thread_local std :: unique_ptr singleton e estáticos. Aqui está uma versão simplificada do código: main.cpp #include #include #include #include using namespace std; #include “yay.hpp” mutex coutMutex; void yay(int id) […]

Onde na fonte os argumentos de cópia std :: bind do gcc em uma estrutura de dados?

Ao tentar entender as circunstâncias sob as quais std::bind aloca memory, eu olhei para essa resposta , que dá alguma intuição, mas eu queria um entendimento mais detalhado, então eu fui e olhei para a fonte do gcc . Eu estou examinando o seguinte código-fonte para std::bind da implementação do gcc da biblioteca padrão do […]

aviso g ++: comparação de expressão não assinada <0 é sempre falsa

Para compilar meu código C ++ eu uso o sinalizador -W , que causa o aviso: aviso: comparação de expressão não assinada <0 é sempre falsa Eu acredito que isso foi considerado como um bug e foi corrigido na versão GCC 4.3, mas estou usando o GCC 4.1 Código que é obviamente ofensivo aqui: void […]

O Clang não pode manipular uma especialização de modelo usando o modelo de modelo referenciado, mas o GCC pode

Eu uso um padrão como o seguinte na minha arquitetura genérica. Compila e executa corretamente no GCC 5.2.0: #include using namespace std; template class Foo { public: void foo(){cout<<"Foo method";} }; template<template class FooType> class BarBase: public FooType { public: double bar() {cout<<"Generic bar";} }; template<template class FooType> class Bar: public BarBase { }; template […]