C ++ ma funkcję (nie potrafię ustalić jej właściwej nazwy), która automatycznie wywołuje pasujące konstruktory typów parametrów, jeśli typy argumentów nie są oczekiwanymi.
To bardzo prosty przykład jest to wywołanie funkcji, która spodziewa się std::string
z const char*
argumentem. Kompilator automatycznie wygeneruje kod w celu wywołania odpowiedniego std::string
konstruktora.
Zastanawiam się, czy to jest tak złe dla czytelności, jak mi się wydaje?
Oto przykład:
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);
Czy to w porządku? Czy to idzie za daleko? Jeśli nie powinienem tego zrobić, czy mogę w jakiś sposób zmusić Clanga lub GCC do ostrzeżenia?