¿Cuándo los compiladores de C y C ++ convierten o promueven un flotante al doble, implícitamente?

Para un proyecto incrustado, me gustaría saber cuándo un compilador C (C99) y un compilador C ++ (C ++ 11) que cumplen con el estándar probablemente promoverán implícitamente una variable / valor de flotación simple para doble flotación.

Soy consciente de dos casos:

literales que no tienen sufijof. Por ejemplo:3.14pasar un flotador para funcionar con una lista de argumentos variadic (...)

¿Hay otros? ¿Qué pasa con las plantillas?

Las respuestas deesta pregunta también son muy útiles para mí, incluyéndolo aquí como referencia.

Respuestas a la pregunta(1)

Su respuesta a la pregunta