Pergunta

Como muitos de nós sabemos (e muitos, muitos mais não), C ++ está atualmente passando redacção final para a próxima revisão da Norma Internacional, previsto para ser publicado em cerca de 2 anos. Rascunhos e documentos estão disponíveis a partir do comitê website . Todos os tipos de novos recursos estão sendo adicionados, os maiores conceitos estar e lambdas. Há um Wikipedia artigo muito abrangente com muitos dos novos recursos. GCC 4.3 e posteriores implementar alguns C ++ 0x apresenta .

Quanto novas funcionalidades ir, eu realmente gosto características de tipo (e os conceitos apropriados), mas o meu líder definitiva é modelos variádicos. Até 0x, listas de modelos longos têm impulso envolvidos Preprocessor normalmente, e são muito desagradáveis ??de escrever. Isso torna as coisas muito mais fácil e permite C ++ 0x modelos para ser tratada como uma linguagem perfeitamente funcional usando modelos variádicos. Eu já escrevi algum código muito legal com eles já, e eu não posso esperar para usá-los mais vezes!

Então, o que características você está mais ansiosos?

Foi útil?

Solução

auto palavra-chave para o tipo de variável inferência

Outras dicas

listas lambdas e inicializador.

Além disso, as mudanças para torná-lo mais fácil de, eventualmente, trazer C ++ em um modelo de lixo coletado, aqueles parecem bastante interessante. Talvez C ++ 1x vai realmente trazer a coleta de lixo, mas 0x / 10 coisas simplesmente criados para a eventualidade.

Eu quero referências rvalues.

Todas as outras novas funcionalidades são coisas que poderíamos facilmente viver sem (recursos infelizmente). No entanto, a falta de Rvalues ??em C ++ até agora tem causado centenas de autores Template Library ter que "hack" em torno da questão rvalue ref quebrado.

variádicos modelos! (Que combinado com referências r-valor nos dá o encaminhamento perfeito!)

Fios e atomics.

Com multicore processadores agora a norma C ++ 0x deveriam ter sido C ++ 07.

G.

Fortemente digitado enums o meu voto. Pascal só teve estes para cerca de 40 anos, por isso é bom ver C ++ finalmente a aproximar-se.

No entanto, a publicação da norma é realmente um não-evento. O que é muito mais importante é quando as características que você quer usar são realmente completa e fiável suportado com toolchains do mundo real. Há gente que parecem realmente gosta de escrever compatível com os padrões de código que não consegue compilar em qualquer compilador conhecido. Boa sorte para eles.

  1. Tem que ser a incorporação de algumas das bibliotecas de impulso (shared_ptr <> e ligam-se no topo da lista)

  2. O controle sobre instatntiation modelo deve finalmente resolver o problema das enormes tempos de compilação e torná-lo realmente viável para usar o código modelo moderno em grandes projectos.

  3. Template typedefs

Muitos outros pequenos, mas importantes coisas, mas eles fazem questão no código de produção.

Mãos conceitos para mim. Mas initializer listas, lambdas, e modelos variádicos são um segundo próximo.

Eu não posso decidir entre ponteiro nulo Tipo , < a href = "http://en.wikipedia.org/wiki/C%2B%2B0x#Tuple_types" rel = "nofollow noreferrer"> Tipos tupla , ou Regex . 'Foreach' é lá em cima também. 'Smart ponteiros' Escusado será dizer ...: -)

Basicamente, eu estou realmente ansioso para a atualização.

Pessoalmente acho que o uso pesado do tipo ponteiro nulo vai pegar um monte de bugs. Tuplas são grandes para lidar com dados relacional. Muita coisa legal.

Não é grande, mas eu estou amando a idéia de um verdadeiro nullptr . Deveria ter sido um direito palavra-chave a partir do git-go.

Closures para mim.

auto palavra-chave

Lambdas e Conceitos

suporte de Ângulo em declarações modelo aninhado.

Então eu vou ser capaz de escrever

std::vector<std::vector<int>> a;

em vez do horrível

std::vector<std::vector<int> > a;

A sintaxe for (auto x : collection) iteração é muito legal eu acho que ... é literalmente reduz o tamanho de muitos cabeçalhos de laço por um fator de 4 ou mais (iterador tipos são muitas vezes ... detalhado)!

Isso também significa que você não tem que excluir a referência o iterador no corpo do loop (com um loop de iteração tradicional, você sempre tem que usar *i ou i->... para obter o valor do elemento, mas aqui você pode apenas usar x), que em alguns casos torna o muito mais agradável código visual.

unicode, multithreading, hash_tables, ponteiros inteligentes e expressões regulares.

ps: perguntam por que eles simplesmente não pode fazer uma revisão de código gr8 e aceitar todas as Boost e Tr1 libs para o normas e tornar a vida mais fácil para todos. Tudo o que teria, então, para resolver é concordar com um modelo de coleta de lixo opcional funcionando.

ponteiros inteligentes. Ele realmente faz a diferença do mundo não ter que explicitamente memória de gerenciar objetos heap-alocado.

Obviamente você ainda precisa "saber o que está fazendo", mas na minha experiência, diminuiu o número de erros de memória relacionada com pelo menos uma ordem de magnitude em software eu trabalhei com.

A sintaxe indo de mal a pior.

modelos e lambdas variádicos são agradáveis, embora a sintaxe de ambos é, infelizmente, muito censurável.

Gosto constexpr especialmente em conjunto com modelos variádicos e literais definidos pelo usuário, podemos finalmente ter literais binários e lotes de outros presentes.

obj.bitmask |= 00001010B; 

REGEX !! e librarys programação paralela embora eu não sei as características de todos eles ainda.

strings literais Raw ! Pensei que python-como blocos de corda foram incríveis, mas eu estava errado! literais em C ++ 0x corda crua são incrivelmente útil para formatação de texto. linguagens de marcação pode ser escreveu diretamente em sua fonte!

no momento eu ter gostado muito do C ++ 0x que tenho jogado com:

  • nullptr
  • static_assert
  • lambdas
  • shared_ptr e weak_ptr
  • unique_ptr
  • decltype e auto

Eu não tentei <regexp> ... Eu pensei que era uma grande ideia ... mas eu nem sequer ter tempo para olhar para ele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top