CppTests

Jul 25, 2017

Iniciei um novo projeto no GitHub que tem por objetivo ser minha prancheta de trabalhos para minha palestra no próximo encontro ccpp. Há uma infinitude de coisinhas novas na linguagem C++, fora as adições à biblioteca STL, mas que devem passar despercebidas da maioria dos programadores, que está mais é querendo terminar seus próprio projetos. Enquanto alguns conceitos, sintaxes e métodos não se solidificam, vale a pena dar uma espiada no futuro?

Depende.

Dei uma olhada nas últimas modificações adicionadas no Visual Studio 2017 (versão 15.3 preview 1, mas o último lançado é o preview 5), e há muitos elementos IMHO supérfluos, mas que tendem a ser integrados aos poucos (I hope).

A lista que achei interessante (com seu projeto):

  • binary_literals_test. Perfumaria muito bem-vinda de uma linguagem feita para trabalhar também baixo nível.
  • constexpr_test. Um teste que alguém fez na nossa lista ccpp do Telegram e que possui uma particularidade interessante (mais abaixo).
  • for_range_generic_test. Ainda em teste, mas me parece a forma definitiva de iterar entre elementos em C++; completamente genérico.
  • generic_lambdas_test. E por falar em genérico, este lambda tem muito a ver com programação funcional.
  • has_include_test. Uma maneira elegante (apesar do nome feio) de ir migrando projetos/libs aos poucos.
  • initializer_list. Só demonstrando o que já é velho (mas que ainda não comentei no blogue).
  • nodiscard_test. Essa é uma das features mais curiosas para escrita de código robusta.
  • sfinae_test. O SFINAE é um dos pilares do C++, e ele vem melhorando cada vez mais.
  • static_assert_test. O que estava faltando que no Boost é macaco velho.
  • user_defined_literals_test. Mais uma perfumaria; essa é bonitinha; para uso acadêmico.
  • variable_templates_test. Mais algo já velho, que demonstro aqui com minha superlib de log.

constexpr para especialização em ifs

A otimização no if através do uso da palavra-chave constexpr possibilita a criação de diferentes instâncias da chamada que não contém o if, mas um dos dois branches dependendo do tipo ser integral ou não.

Para que a compilação dessa opção funcione no Visual Studio 2017 15.3 é necessário inserir o parâmetro /std:c++latest nas opções do projeto em C/C++, Command Line:

Todos (ou a maioria) deles ainda está em teste. Acabei de baixar o preview 5, conforma um dos membros da ML dos MVPs C++ me informou que saiu quentinha do forno. Em breve novidades.

Wanderley Caloni, 2017-07-25