¿Qué tolower en C ++?

Dadostring foo, He escritorespuestas sobre cómo usarcctype'stolower para convertir los caracteres a minúsculas

transform(cbegin(foo), cend(foo), begin(foo), static_cast<int (*)(int)>(tolower))

Pero yo tengocomenzó a considerar locale'stolower, que podría usarse así:

use_facet<ctype<char>>(cout.getloc()).tolower(data(foo), next(data(foo), foo.size()));
¿Hay alguna razón para preferir uno de estos sobre el otro?¿Su funcionalidad difiere en absoluto?Quiero decir, aparte del hecho de quetolower acepta y devuelve unint que supongo que son solo algunas cosas anticuadas de C?

Respuestas a la pregunta(3)

Su respuesta a la pregunta