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

1007
Quais são os novos recursos do C ++ 17?

Bloqueado . Esta pergunta e suas respostas estão bloqueadas porque a questão está fora do tópico, mas tem um significado histórico. No momento, não está aceitando novas respostas ou interações. O C ++ 17 agora está completo, portanto é improvável que ocorram grandes...

543
Regras de invalidação do iterador

Quais são as regras de invalidação do iterador para contêineres C ++? De preferência em um formato de lista resumida. (Observação: isso deve ser uma entrada para as Perguntas frequentes sobre C ++ do Stack Overflow . Se você quiser criticar a idéia de fornecer uma FAQ neste formulário, a...

242
Qual é o objetivo do std :: lavagem?

P0137 apresenta o modelo de função std::laundere faz muitas e muitas alterações no padrão nas seções relativas a uniões, vida útil e ponteiros. Qual é o problema que este artigo está resolvendo? Quais são as alterações no idioma que eu tenho que estar ciente? E o que estamos...

186
O que fez i = i ++ + 1; legal em C ++ 17?

Antes de começar a gritar comportamento indefinido, isso está explicitamente listado em N4659 (C ++ 17) i = i++ + 1; // the value of i is incremented Ainda em N3337 (C ++ 11) i = i++ + 1; // the behavior is undefined O que mudou? Pelo que posso entender , de [N4659 basic.exec] Exceto...

162
O que é string_view?

string_viewfoi um recurso proposto no TS Fundamentals da biblioteca C ++ ( N3921 ) adicionado ao C ++ 17 Tanto quanto eu entendo, é um tipo que representa algum tipo de "conceito" de string que é uma visualização de qualquer tipo de contêiner que possa armazenar algo visível como uma...

136
A maneira mais elegante de escrever um único 'se'

Desde o C ++ 17, é possível escrever um ifbloco que será executado exatamente uma vez assim: #include <iostream> int main() { for (unsigned i = 0; i < 10; ++i) { if (static bool do_once = true; do_once) { // Enter only once std::cout << "hello one-shot" << std::endl; //...

124
Como as variáveis ​​embutidas funcionam?

Na reunião de padrões ISO C ++ do Oulu de 2016, uma proposta chamada Variáveis ​​em linha foi votada no C ++ 17 pelo comitê de padrões. Em termos leigos, quais são as variáveis ​​embutidas, como elas funcionam e para que servem? Como as variáveis ​​embutidas devem ser declaradas, definidas e...

124
Lambda retornando: isso é legal?

Considere este programa bastante inútil: #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto it = [&](auto self) { return [&](auto b) { std::cout << (a + b) << std::endl; return self(self); }; }; it(it)(4)(6)(42)(77)(999); } Basicamente,...

121
polymorphic_allocator: quando e por que devo usá-lo?

Aqui está a documentação sobre cppreference , aqui está o esboço de trabalho. Devo admitir que não entendi qual é o verdadeiro propósito polymorphic_allocatore quando / por que / como devo usá-lo. Como exemplo, o pmr::vectortem a seguinte assinatura: namespace pmr { template <class T>...

96
Por que usar std :: make_unique em C ++ 17?

Pelo que entendi, C ++ 14 foi introduzido std::make_uniqueporque, como resultado da ordem de avaliação dos parâmetros não ser especificada, isso não era seguro: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Explicação: se a avaliação primeiro alocar a memória para o...

94
experimental :: erro do vinculador do sistema de arquivos

Eu tento usar os novos recursos do c ++ 1z na cabeça do desenvolvimento dentro do gcc 6.0. Se eu tentar este pequeno exemplo: #include <iostream> #include <experimental/filesystem> namespace fs = std::experimental::filesystem; int main() { fs::path p1 = "/home/pete/checkit";...

90
Como funciona a eliminação de cópia garantida?

Na reunião de Padrões Oulu ISO C ++ de 2016, uma proposta chamada Elisão de cópia garantida por meio de categorias de valor simplificadas foi votada em C ++ 17 pelo comitê de padrões. Como funciona exatamente a eliminação de cópia garantida? Abrange alguns casos em que a eliminação da cópia já...