C ++ tiene una característica (no puedo encontrar el nombre propio), que llama automáticamente a los constructores coincidentes de los tipos de parámetros si los tipos de argumento no son los esperados.
Un ejemplo muy básico de esto es llamar a una función que espera a std::string
con un const char*
argumento. El compilador generará automáticamente código para invocar al std::string
constructor apropiado .
Me pregunto, ¿es tan malo para la legibilidad como creo que es?
Aquí hay un ejemplo:
class Texture {
public:
Texture(const std::string& imageFile);
};
class Renderer {
public:
void Draw(const Texture& texture);
};
Renderer renderer;
std::string path = "foo.png";
renderer.Draw(path);
¿Eso está bien? ¿O va demasiado lejos? Si no debería hacerlo, ¿puedo hacer que Clang o GCC lo adviertan de alguna manera?