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
Download

Original PPTX - Rodrigo Strauss