type-deduction

¿Cuál es la razón detrás del comportamiento decltype?

Como entendí en C++11 decltype(expression) se usa para deducir exactamente el mismo tipo de la expresión dada. Pero cuando la ... o decltype((x + x)) el tipo deducido es T, pero no T&. Esto es aún más confuso. No se si este comportamiento es estándar.

¿Por qué auto x{3} deduce una lista de inicializadores?

Me encanta auto en C++11. Es maravilloso. Pero tiene una inconsistencia que realmente me pone de los nervios, porque tropiezo ... ; // No need to specify the type Funcionaría muy bien. Entonces, ¿cuál es la razón detrás del caso especial para auto x{i}?

Eliminar referencia en decltype (devuelve T en lugar de T & donde T & es el decltype)

(Si eres un pro de C++11, salta al párrafo en negrita.) Digamos que quiero escribir un método de plantilla que llama y devue ... l tipo de retorno de doSomething como decltype(helper(foo.bar())). Pero tiene que haber una mejor manera, lo estoy sintiendo.

Deducción de la función

Digamos que tenemos una plantilla de clase como esta: template<typename F> class A { public: template<typename.. ... a clase podrían tomar una función y parámetros para esta función en tiempo de construcción y llamar a esto función más tarde.