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

C ++ 17 é o nome do padrão C ++ aprovado em 2017. Ele se baseia no padrão C ++ 14 anterior, melhorando a linguagem principal e a biblioteca padrão e adicionando alguns novos recursos de linguagem.

3
Como posso criar uma maneira cartesiana de produtos de listas de tipos em C ++?
Auto-explicativo. Basicamente, digamos que eu tenha listas de tipos assim: using type_list_1 = type_list<int, somestructA>; using type_list_2 = type_list<somestructB>; using type_list_3 = type_list<double, short>; Eles podem ser um número variável de listas de tipos. Como obtenho uma lista de tipos de produto cartesiano? result = type_list< type_list<int, somestructB, double>, type_list<int, …


4
Conversão implícita não permitida no retorno
#include <optional> bool f() { std::optional<int> opt; return opt; } Não compila: 'return': cannot convert from 'std::optional<int>' to 'bool' Referência de consultoria Eu teria pensado em encontrar uma explicação, mas li como deveria estar ok. Conversões implícitas são executadas sempre que uma expressão de algum tipo T1 é usada no …

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 …


4
Enumeração contínua C ++ 11
Existe uma maneira de verificar no C ++ 11 se uma enumeração é contínua ? É totalmente válido fornecer valores de enumeração que não são. Existe talvez um recurso como um traço de tipo em C ++ 14, C ++ 17 ou C ++ 20 para verificar se o enum …
17 c++  c++11  c++14  c++17  c++20 


1
std :: pair <auto, auto> tipo de retorno
Eu estava brincando com autono std::pair. No código abaixo, a função fdeve retornar um std::pairdos tipos que dependem de um parâmetro de modelo. Um exemplo de trabalho: EXEMPLO 1 template &lt;unsigned S&gt; auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr …



1
Isso é um bug no std :: gcd?
Me deparei com esse comportamento std::gcdque achei inesperado: #include &lt;iostream&gt; #include &lt;numeric&gt; int main() { int a = -120; unsigned b = 10; //both a and b are representable in type C using C = std::common_type&lt;decltype(a), decltype(b)&gt;::type; C ca = std::abs(a); C cb = b; std::cout &lt;&lt; a &lt;&lt; ' …



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.