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

93
O que significa [=] em C ++?

Eu quero saber o que [=]faz? Aqui está um pequeno exemplo template <typename T> std::function<T (T)> makeConverter(T factor, T offset) { return [=] (T input) -> T { return (offset + input) * factor; }; } auto milesToKm = makeConverter(1.60936, 0.0); Como o código funcionaria em...

92
Implementação de lambda C ++ 11 e modelo de memória

Gostaria de obter algumas informações sobre como pensar corretamente sobre encerramentos de C ++ 11 e std::functionem termos de como eles são implementados e como a memória é tratada. Embora eu não acredite em otimização prematura, tenho o hábito de considerar cuidadosamente o impacto de minhas...

90
O que é const void?

A descrição dos std::is_voidestados que: Fornece o valor da constante do membro igual a true, se T for do tipo void, const void, volatile void ou const volatile void. Então o que poderia ser const void, ou um volatile void? Esta resposta afirma que o const voidtipo de retorno seria...

89
Como fazer um typedef condicional em C ++

Estou tentando fazer algo assim: #include <iostream> #include <random> typedef int Integer; #if sizeof(Integer) <= 4 typedef std::mt19937 Engine; #else typedef std::mt19937_64 Engine; #endif int main() { std::cout << sizeof(Integer) << std::endl; return...

89
Por que um lambda tem o tamanho de 1 byte?

Estou trabalhando com a memória de alguns lambdas em C ++, mas estou um pouco confuso com o tamanho deles. Aqui está meu código de teste: #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout...

89
Confusão de inicialização padrão, valor e zero

Estou muito confuso sobre a inicialização de valor e padrão e zero. e especialmente quando eles são iniciados para os diferentes padrões C ++ 03 e C ++ 11 (e C ++ 14 ). Estou citando e tentando estender uma resposta realmente boa Valor- / Padrão- / Zero- Init C ++ 98 e C ++ 03 aqui para torná-lo...