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.

3
Dividir um determinado tipo std :: variant por um determinado critério
Como por um determinado tipo de variante using V = std::variant<bool, char, std::string, int, float, double, std::vector<int>>; declarar dois tipos de variantes using V1 = std::variant<bool, char, int, float, double>; using V2 = std::variant<std::string, std::vector<int>>; de onde V1inclui todos os tipos aritméticos de Ve V2inclui todos os tipos não-aritméticos de …
20 c++  c++17  std-variant 


4
É válido usar std :: transform com std :: back_inserter?
Cppreference possui este código de exemplo para std::transform: std::vector<std::size_t> ordinals; std::transform(s.begin(), s.end(), std::back_inserter(ordinals), [](unsigned char c) -> std::size_t { return c; }); Mas também diz: std::transformnão garante a aplicação em ordem de unary_opou binary_op. Para aplicar uma função a uma sequência em ordem ou para aplicar uma função que modifica …

2
É seguro chamar o posicionamento novo em `this` para objeto trivial?
Sei que essa pergunta já foi feita várias vezes, mas não consegui encontrar uma resposta para esse caso em particular. Digamos que eu tenho uma classe trivial que não possui nenhum recurso e tem destruidor vazio e construtor padrão. Possui várias variáveis ​​de membro com inicialização em classe; nenhum deles …

3
Comportamento indefinido no vetor de vetores lançados
Por que esse código grava um número indefinido de números inteiros aparentemente não inicializados? #include <iostream> #include <vector> using namespace std; int main() { for (int i : vector<vector<int>>{{77, 777, 7777}}[0]) cout << i << ' '; } Eu esperava que a saída fosse 77 777 7777. Esse código deveria …
19 c++ 

2
int numeral -> regras de conversão de ponteiros
Considere o seguinte código. void f(double p) {} void f(double* p) {} int main() { f(1-1); return 0; } O MSVC 2017 não compila isso. Parece que há uma chamada sobrecarregada ambígua, como 1-1é a mesma 0e, portanto, pode ser convertida double*. Outros truques, como 0x0, 0L, ou static_cast<int>(0), não …
19 c++  visual-c++  types 

3
c ++ Threads dentro para loop imprimem valores incorretos
Estou tentando entender o Multi-threading em c ++, mas estou preso neste problema: se eu lançar threads em um loop for, eles imprimirão valores incorretos. Este é o código: #include <iostream> #include <list> #include <thread> void print_id(int id){ printf("Hello from thread %d\n", id); } int main() { int n=5; std::list<std::thread> …




2
Por que o conceito same_as verifica a igualdade de tipos duas vezes?
Observando a possível implementação do conceito same_as em https://en.cppreference.com/w/cpp/concepts/same_as, notei que algo estranho está acontecendo. namespace detail { template< class T, class U > concept SameHelper = std::is_same_v<T, U>; } template< class T, class U > concept same_as = detail::SameHelper<T, U> && detail::SameHelper<U, T>; A primeira pergunta é por que …
19 c++  c++20  concept 


5
Como resolver dangling const ref
O seguinte programa curto #include <vector> #include <iostream> std::vector<int> someNums() { return {3, 5, 7, 11}; } class Woop { public: Woop(const std::vector<int>& nums) : numbers(nums) {} void report() { for (int i : numbers) std::cout << i << ' '; std::cout << '\n'; } private: const std::vector<int>& numbers; }; …
18 c++ 

3
Os valores de fechamento lambda podem ser passados ​​como parâmetros de referência rvalue
Descobri que os lvaluefechamentos lambda sempre podem ser passados ​​como rvalueparâmetros de função. Veja a seguinte demonstração simples. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: …


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.