c++11
DESCRIPTION
Apresentação feita no Oitavo Encontro de Programadores C & C++, no dia 17 de setembro de 2011TRANSCRIPT
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