Post on 24-Feb-2016
description
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.
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++0xCompilerSupport
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