Aprendi e utilize o padrão C++03 até o momento vale a pena aprender a utilizar o padrão C++11, ele ainda funciona bem com C e inlines assembly? temos compiladores para todas arquiteturas PC? ganha ou perde algo em desempenho em relação ao padrão anterior?
Cara, não tenho usado muito C++ ultimamente, nem posso dizer que tenho conhecimento para especificar as diferenças de cada versão, mas a um tempo li um artigo muito bom, que mostrar as diferenças, novidades e responde algumas de suas perguntas, segue o link:
http://www.mentebinaria.com.br/artigos/0x1c/0x1c-cspecs.html
Muito bom, de verdade, vou até reler, pois ele mostra todo um histórico do C++ e fala sobre a nova versão.
[quote=lucaspolo]Cara, não tenho usado muito C++ ultimamente, nem posso dizer que tenho conhecimento para especificar as diferenças de cada versão, mas a um tempo li um artigo muito bom, que mostrar as diferenças, novidades e responde algumas de suas perguntas, segue o link:
http://www.mentebinaria.com.br/artigos/0x1c/0x1c-cspecs.html
Muito bom, de verdade, vou até reler, pois ele mostra todo um histórico do C++ e fala sobre a nova versão.[/quote]
realmente mostra um histórico interessante mas parece terminar no padrão C99, queria saber de alguém que também trabalha ou utiliza C++ e já utilizou os dois padrões
Nada muda nesse sentido.
Obviamente, não. O padrão saiu no início desse ano, mal temos compiladores para x86 e x64 ainda.
Nem mesmo as principais IDEs líderes de mercado, como Visual e QT, suportam o padrão totalmente.
Ganha. Em especial a STL foi bastante beneficiada por causa da move semantics.
O C++ também ganha uma biblioteca oficial para acesso a threads, baseada na da boost, o que irá permitir que programadores atendam multiplos núcleos com mais facilidade a partir de agora.
Há ganhos também no mecanismo de templates e em agora existir lambda.
Finalmente, o C++ agora incorpora os smart pointers, também baseados nos da boost, que permitem ter gerência mais automática de recursos (é quase como ter um garbage collector).
Vale ressaltar que a filosofia que norteia o C++ é “você não é obrigado a pagar pelo que não usa”.
Portanto, é muito difícil que um padrão vá ter desempenho inferior ao anterior. Quem projeta a linguagem é extremamente cuidadoso nesse respeito.
Os projetos que tenho no Github já usam um pouco do novo padrão. Você pode ver um exemplo de lambda na prática na função forEach, que criei para percorrer uma imagem na xncv:
https://github.com/ViniGodoy/xncv/blob/master/samples/skinSegmentation.cpp
No fundo é só um syntax suggar para um functor.
A vantagem é que antes muitos programadores ficavam tentados a usar um ponteiro de função, uma vez que é mais fácil do que fazer com uma struct / classe.
O lambda tem a sintaxe mais simples que o ponteiro de função, com a vantagem de ter as possibilidades de inline e composição da struct.
Uma ótima referência para o novo padrão é a wiki americana:
Funciona como o auto_ptr da std?
O auto_ptr é apenas um deles.
Inclusive, o funcionamento desse ponteiro foi corrigido.
Tem também o shared_ptr, conta referências e permite compartilhamento de objetos. Entre outros ponteiros.
Para mais informações:
http://www.pontov.com.br/site/cpp/43-smart-pointers
Quanto a sua pergunta:
Se você usa C++, sim, vale a pena aprender o C++11.
Só não precisa sair correndo… ainda.
Ainda vai levar um tempo até que ele seja realmente adotado.
Valeu a ajuda Vini você respondeu tudo que precisava.