Youtube - CppCon 2014 Scott Meyers Type Deduction and Why You Care
CppCon 2014: Scott Meyers "Type Deduction and Why You Care"
```toc min_depth: 2 max_depth: 6 ``` https://www.youtube.com/watch?v=wQxj20X-tIU
Transcrição
01:22

Rules for typing deduction
- If you have a pointer type or reference you deduce for
- on the other side, you passed by value
03:59

C+ 11
04:12

C++ 14
05:32

09:40

deduced type=tipo determinado
Param type=tipo do parâmetro da função
Geralmente ambos são diferentes
12:08

14:31

15:010

Universal References
17:06

Reference collapsing


Resumo para templates que usam universal reference:
lvalue => lvalue reference
rvalue =>rvalue reference
by-value parameters
21:22

non-reference non-pointer autos
22:36

24:55

Repare que neste caso somente o ponteiro const foi ignorado.
By value => top level const is ignored
By reference is not ignored, o const é mantido.
Special Cases
28:43

auto Type Deduction
29:18

Auto Type Deduction
31:13

ERRATA: era para ser int quando tem um elemento
Lambda Capture Type Deduction
38:20

39:07
Template type deduction, ams não ignora const
39:58

lambda Capture Type Deduction
41:16

lambda Capture Type Deduction (mutable)
42:29

43:33

45:06

46:25

46:48

47:58

49:54

Observe que os resultados com boost e typeid foram diferentes, apesar de não termos mudado o código.
50:23

51:25

52:20

54:42

56:13

57:58

01:00:23

01:00:37

#best-practices quando você escreve códigos usando decltype sem que ter muito cuidade como escreve o seu código, veja no exemplo acima, apenas a inclusão de 1 parêntese modificou o retorno da função
#best-practices Não use tipos dedutíveis para retorno da função, pois conduz a erros bastante difíceis de depurar, como o código acima. Exceção lambdas function no C++11

