Code: Select all
class Registry2
{public:
template
component_t& getComponent()
{
component_t t;
return t;
}
};
int main(int argc, char* argv[])
{
Registry2 registry;
auto& ref = registry.getComponent();
}
Code: Select all
-Werror=return-type
-Wno-unused-variable
Warnung: Verweis auf den Stapelspeicher, der mit der lokalen Variablen „t“ verknüpft ist
returned [-Wreturn-stack-address]
Bei meinem Compiler, bei dem es sich um Clang 22 handelt, schlägt dies jedoch fehl kompilieren und sagt:
Fehler: Nicht-konstante L-Wert-Referenz auf Typ „int“ kann nicht an einen
temporären Typ „int“ 65 | gebunden werden return t;
Was ist passiert, dass es sich geändert hat? Ist es spezifisch für Clang-Version 22?
Mobile version