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 […]
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 […]
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? Em particular, como ele sabe quais destruidores chamar quando desenrola um quadro (ou seja, que tipo de informação é armazenada e onde ela é armazenada)?
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 […]
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. […]
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) […]
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 […]
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 […]
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 […]