Oitavo Encontro de Programadores C & C++ Vinicius Jarina: Integrando Lua e C++ Gianni Rossi: Desenvolvendo aplicações multi-plataformas em C++ para iOS e Android (NDK) Rodrigo Strauss: C++11: Do que se trata e como ele vai facilitar a sua vida Rodrigo Kumpera: Modelos de memória e porque você precisa saber disso Marcelo Zimbres Silva: O framework ROOT: Não apenas para físicos. C++11 Rodrigo Strauss www.1bit.com.br @rodrigostrauss Eu, eu e eu • Mantenho o site www.1bit.com.br, onde escrevo sobre C++ • Co-Fundador do grupo C & C++ Brasil e owner da lista • Sócio Programador da www.intelitrader.com.br • Server side is my side • Uso C++ porque resolve meus problemas, uso bastante Python também • mercado financeiro segurança da informação mercado financeiro segurança da informação .NET segurança da informação mercado financeiro • Windows ou Linux? Eu fico com os dois, porque ainda não estudei BSD ou Solaris. Motivo do C++11 • • • • Facilidades de linguagens modernas Facilidade para ensino Melhorias na biblioteca padrão Acabar com “gambiarras” do Boost – lambda – assert – bind Adoção • • • • GCC Visual C++ 2010 Intel C Mais detalhes em http://wiki.apache.org/stdcxx/C++0xCompiler Support Bibliotecas TR11 • • • • • • thread shared_ptr regex tuple array unordered_map (hash table) Lambda • • • • Possibilidade de criar funções anônimas Muito útil para algoritmos Boost bind nunca mais! Até onde eu sei, a implementação mais, digamos, detalhada – Especificação de captura e escopo for_each( v.begin(), v.end(), [](string a) {cout << a;}); Nullptr • Constante para ponteiro nulo, e não mais um #define NULL 0 • Resolve o problema de overload de funções para int ou xpto* Auto e decltype • auto – Deduz o tipo da variável pelo tipo da expressão rvalue na atribuição – auto a = 10; – for(auto i = v.begin() ; i != v.end() ; ++i); – decltype(a) b; Nova sintaxe para declarar funções • Tipo de retorno depois da função • auto func(int a, int b) -> int { return a + b; } • Útil para templates template<typename T> auto func(T a, T b) -> decltype(a+b) { return a + b; } Fuções de uma classes • • • • delete default final Override Rvalue reference • Possibilita mover um rvalue • Aumenta performance por remover cópias static_assert • Checar condições em tempo de compilação • Útil para programação com templates E muito mais • Variadic Templates • String literals – Utf8 (u8), utf16 (u) e utf32 (U) • • • • • • • • • Enum tipado Sintaxe para inicialização uniforme Constructor delegate Range based loop override e final sizeof(SomeType::member); “Isso não é um shift!” Template alias Unrestricted unions You Win. Flawless Victory. Fatality