В C ++ есть особенность (я не могу определить ее правильное имя), которая автоматически вызывает соответствующие конструкторы типов параметров, если типы аргументов не являются ожидаемыми.
Очень простой пример этого вызова функции, ожидающей std::string
с const char*
аргументом. Компилятор автоматически сгенерирует код для вызова соответствующего std::string
конструктора.
Мне интересно, это так плохо для читабельности, как я думаю, что это?
Вот пример:
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);
Это просто нормально? Или это заходит слишком далеко? Если я не должен этого делать, могу ли я заставить Clang или GCC предупредить об этом?