Perguntas com a marcação «c++»

C ++ é uma linguagem de programação de uso geral. Foi originalmente projetado como uma extensão para C e tem uma sintaxe semelhante, mas agora é uma linguagem completamente diferente. Use esta tag para perguntas sobre o código (a ser) compilado com um compilador C ++. Use uma tag específica da versão para perguntas relacionadas a uma revisão padrão específica [C ++ 11], [C ++ 14], [C ++ 17] ou [C ++ 20] etc.


7
Maneira linguística de distinguir dois construtores de zero-arg
Eu tenho uma classe como esta: struct event_counts { uint64_t counts[MAX_COUNTERS]; event_counts() : counts{} {} // more stuff }; Normalmente, eu quero padrão (zero) inicializar a countsmatriz como mostrado. Em locais selecionados identificados por criação de perfil, no entanto, eu gostaria de suprimir a inicialização do array, porque sei que …

2
Abordagens para funcionar SFINAE em C ++
Estou usando fortemente a função SFINAE em um projeto e não tenho certeza se existem diferenças entre as duas abordagens a seguir (além do estilo): #include <cstdlib> #include <type_traits> #include <iostream> template <class T, class = std::enable_if_t<std::is_same_v<T, int>>> void foo() { std::cout << "method 1" << std::endl; } template <class …
40 c++  sfinae 


2
Por que remove_reference não funciona em funções?
Ocorreu algo estranho ao fazer algum modelo de metaprogramação no outro dia. Basicamente, tudo se resume a essa afirmação que não (como eu esperaria) passar. static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); No começo, pensei que estava cometendo um erro sintático ao definir uma referência de função, mas essa afirmação passa, mostrando que esse não …
38 c++  templates  types  c++17 

4
Meta programação
Alguém pode me explicar por que o primeiro método de meta-programação de modelos está indo para um loop infinito, mas o segundo é executado corretamente. #include <iostream> using namespace std; template<int N, int M> struct commondivs { static const int val = (N<M) ? commondivs<N,(M-N)>::val : commondivs<(N-M),M>::val; }; template<int N> …



4
Sobrecarregando uma Função Usando Modelos
Estou tentando definir uma função usando modelos e quero que o nome do tipo seja int ou anEnum (uma enumeração específica que eu havia definido). Eu tentei o seguinte, mas falhei: template <int | anEnum T> // or <int T, anEnum T> or <int, anEnum T> bool isFunction(const T &aVariable){} …


2
É legal alocar novamente um ponteiro para funcionar?
Ponteiros para funções não são ponteiros de dados simples, pois não podem ser armazenados em um ponteiro nulo *. No entanto, parece que eu posso armazenar a cópia de um ponteiro de função na memória dinâmica (no gcc e no clang) como no código abaixo. Esse código é legal de …
33 c++ 


3
C ++ decltype e parênteses - por quê?
O assunto foi discutido antes , mas isso não é uma duplicata. Quando alguém pergunta sobre a diferença entre decltype(a)e decltype((a)), a resposta usual é - aé uma variável, (a)é uma expressão. Acho esta resposta insatisfatória. Primeiro, aé uma expressão também. As opções para uma expressão primária incluem, entre outras …

4
Por que duas cláusulas de uso que estão sendo resolvidas para o mesmo tipo são vistas como ambíguas no gcc
Eu tenho duas classes base com cláusulas de uso class MultiCmdQueueCallback { using NetworkPacket = Networking::NetworkPacket; .... } class PlcMsgFactoryImplCallback { using NetworkPacket = Networking::NetworkPacket; .... } Declaro uma classe class PlcNetwork : public RouterCallback, public PlcMsgFactoryImplCallback, public MultiCmdQueueCallback { private: void sendNetworkPacket(const NetworkPacket &pdu); } o compilador sinaliza uma …


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.