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.


1
O construtor std :: vector range pode invocar conversões explícitas?
O programa a seguir está bem formado? #include <vector> struct A { explicit A(int) {} }; int main() { std::vector<int> vi = {1, 2, 3, 4, 5}; std::vector<A> va(vi.begin(), vi.end()); } De acordo com o C ++ 17 [sequence.reqmts], o requisito para X u(i, j); onde Xé um contêiner de …
14 c++  c++17 

3
Sobrecarregar uma função lambda
Como sobrecarregar uma função lambda local simples? SSE do problema original: #include <iostream> #include <map> void read() { static std::string line; std::getline(std::cin, line); auto translate = [](int idx) { constexpr static int table[8]{ 7,6,5,4,3,2,1,0 }; return table[idx]; }; auto translate = [](char c) { std::map<char, int> table{ {'a', 0}, {'b', …

1
Como a implementação do c ++ nullptr funciona?
Estou curioso para saber como nullptrfunciona. Os padrões N4659 e N4849 dizem: tem que ter tipo std::nullptr_t; você não pode pegar o endereço dele; pode ser convertido diretamente em um ponteiro e ponteiro em membro; sizeof(std::nullptr_t) == sizeof(void*); sua conversão para boolé false; seu valor pode ser convertido para o …



1
Operador ambíguo em gcc
Eu criei um modelo de função para imprimir alguns contêineres stl #include <iostream> #include <vector> #include <string> template <template <typename, typename> class C, typename T, typename A> std::ostream& operator<<(std::ostream& os, const C<T, A>& container) { for (auto& elem : container) { os << elem << " "; } return os; …
13 c++  c++17 



1
O lambda sem captura é garantido como vazio pelo padrão?
Estou procurando uma maneira de identificar lambdas vazias (sem captura) de outras lambdas em uma função de modelo. Atualmente, estou usando C ++ 17, mas estou curioso para respostas C ++ 20 também. Meu código fica assim: template<typename T> auto func(T lambda) { // The aguments of the lambdas are …
12 c++  lambda  c++17  c++20 


1
Classificação não qualificada () - por que compila quando usado em std :: vector e não em std :: array, e qual compilador está correto?
Ao chamar std::sort()um std::array: #include <vector> #include <array> #include <algorithm> int main() { std::vector<int> foo{4, 1, 2, 3}; sort(begin(foo), end(foo)); std::array<int, 4> foo2{4, 1, 2, 3}; sort(begin(foo2), end(foo2)); } O gcc e o clang retornam um erro na classificação no std::array- clang diz erro: uso do identificador não declarado 'sort'; …
11 c++  c++17 


6
Faixa inocente baseada em loop não funcionando
O seguinte não compila: #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Experimente no godbolt O erro do compilador é: error: assignment of read-only reference 's' Agora, no meu caso …


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.