C++11 é finalmente aprovado

http://herbsutter.com/2011/08/12/we-have-an-international-standard-c0x-is-unanimously-approved/

Foi aprovado por unanimidade pelo comitê ISO o novo padrão do C++, o C++11, anteriormente chamado de C++x0. O “11” vem de 2011. O último padrão do C++ é de 1998.
Uma lista com os novos recursos pode ser vista aqui.

Eu prefiro a lista da Wikipedia americana, tem diversos exemplos: http://en.wikipedia.org/wiki/C%2B%2B0x

Era previsível, geralmente a coisa anda rápido após o final draft, que foi aprovado no mês passado.
Já estou ensinando C++0x nas aulas que dou na faculdade e na pós de jogos. :slight_smile:

Legal mudarem para c++11. Assim fica padronizado como c90, c95 e c99. Já me atualizei também com o livro “The new C++”.
o engraçado é que a stl continua com a notação “all_is_lowercase”.

Que livro é esse Julio?
Estou estudando C++ pela apostila da UFSC do professor André. Será que vou ter que desconsiderar essa apostila e pegar um livro que aborde o novo padrão?

[quote=matheuslmota]Que livro é esse Julio?
Estou estudando C++ pela apostila da UFSC do professor André. Será que vou ter que desconsiderar essa apostila e pegar um livro que aborde o novo padrão?[/quote]

Acho que não, a maioria dos recursos novos são um pouco mais avançados e você só vai compreende-los depois de vencer a sintaxe básica.
Você pode seguir pela apostila do André e depois só atualizar vendo as diferenças na wiki.

[quote=ViniGodoy][quote=matheuslmota]Que livro é esse Julio?
Estou estudando C++ pela apostila da UFSC do professor André. Será que vou ter que desconsiderar essa apostila e pegar um livro que aborde o novo padrão?[/quote]

Acho que não, a maioria dos recursos novos são um pouco mais avançados e você só vai compreende-los depois de vencer a sintaxe básica.
Você pode seguir pela apostila do André e depois só atualizar vendo as diferenças na wiki. [/quote]

O interessante é que tanto o Qt como o Visual Studio já aceitam C++0x
Vou atualizar os dois na minha máquina.

[quote=matheuslmota][quote=ViniGodoy][quote=matheuslmota]Que livro é esse Julio?
Estou estudando C++ pela apostila da UFSC do professor André. Será que vou ter que desconsiderar essa apostila e pegar um livro que aborde o novo padrão?[/quote]

Acho que não, a maioria dos recursos novos são um pouco mais avançados e você só vai compreende-los depois de vencer a sintaxe básica.
Você pode seguir pela apostila do André e depois só atualizar vendo as diferenças na wiki. [/quote]

O interessante é que tanto o Qt como o Visual Studio já aceitam C++0x
Vou atualizar os dois na minha máquina.

[/quote]

Cara, se eu não me engano já enviei este livro para o viny também. Me passa seu email por msg privado que eu te envio.

Mandei um pvt agora.

Este C++11 tem muitas novidades e melhorias bacanas… poder usar >> ao invés de > > (http://www.georgeflanagin.com/c++11/anglebrackets.php), for (http://www.georgeflanagin.com/c++11/for.php) e a nova forma de inicialização (http://www.georgeflanagin.com/c++11/initializers.php) são interessantes.

[]'s

Eu particularmente gostei dos lambdas, dos smart pointers, da API de threads, da possibilidade de chamar um construtor de outro, do for each, e da move semantics.

Smart pointers é show, conheci eles em um tutorial no Ponto V e achei o conceito fantástico. É um ótimo recurso que a biblioteca padrão do C++ adotou.

o move foi uma sacada incrível. É sempre preferível mover endereços de memória que fazer deep copy nas variáveis( que acaba com o desempenho da aplicação) Tem um bench naquele livro que postei que mostra um ganho surpreendente no software.

[quote=juliocbq]o move foi uma sacada incrível. É sempre preferível mover endereços de memória que fazer deep copy nas variáveis( que acaba com o desempenho da aplicação) Tem um bench naquele livro que postei que mostra um ganho surpreendente no software.
[/quote]

Não entendi direito. Qual a diferença entre

Widget w1; Widget w2(w1);
e

Widget w1; Widget w2(std::move(w1));
?
Na segunda opção eu tenho apenas um valor, w1, para o qual w1 e w2 apontam, é isso?

[quote=matheuslmota][quote=juliocbq]o move foi uma sacada incrível. É sempre preferível mover endereços de memória que fazer deep copy nas variáveis( que acaba com o desempenho da aplicação) Tem um bench naquele livro que postei que mostra um ganho surpreendente no software.
[/quote]

Não entendi direito. Qual a diferença entre

Widget w1; Widget w2(w1);
e

Widget w1; Widget w2(std::move(w1));
?
Na segunda opção eu tenho apenas um valor, w1, para o qual w1 e w2 apontam, é isso?[/quote]

w2 recebe o endereço de memória de w1. Essa é a diferença. O move te permite criar um esquema de memória compartilhada.

[quote=juliocbq][quote=matheuslmota][quote=juliocbq]o move foi uma sacada incrível. É sempre preferível mover endereços de memória que fazer deep copy nas variáveis( que acaba com o desempenho da aplicação) Tem um bench naquele livro que postei que mostra um ganho surpreendente no software.
[/quote]

Não entendi direito. Qual a diferença entre

Widget w1; Widget w2(w1);
e

Widget w1; Widget w2(std::move(w1));
?
Na segunda opção eu tenho apenas um valor, w1, para o qual w1 e w2 apontam, é isso?[/quote]

w2 recebe o endereço de memória de w1. Essa é a diferença. O move te permite criar um esquema de memória compartilhada.[/quote]

Ah, entendi.

Mais um artigo interessante sobre a notícia: http://www.infoworld.com/d/application-development/hail-the-return-native-code-and-the-resurgence-c-170142

Valeu Vini. Legal esta novidade Google Native Client (NaCl), mal posso esperar para ver :smiley: