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

40
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 =

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

38
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) ?...

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

33
É 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 acordo com o padrão C ++,...

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