Kannst du 'constexpr' hinzufügen, um das Verhalten zu ändern?
Gegeben zwei Programme, bei denen der einzige Unterschied im Quellcode das Vorhandensein oder Fehlen eines @ iconstexpr
, kann sich die Bedeutung des Programms ändern?
it anderen Worten, wenn es eine Compiler-Option gäbe, die den Compiler dazu auffordert, wirklich hart zu versuchen, auf @ zu schließconstexpr
Wäre es möglich, vorhandenen Standardcode zu brechen und / oder seine Bedeutung auf schlechte Weise zu ändern?
Stellen Sie sich den Umgang mit einer Codebasis vor, bei der der ursprüngliche Entwickler vergessen hat, @ einzuschließeconstexpr
an Stellen, an denen es möglich war, möglicherweise Code, der vor C ++ 11 geschrieben wurde. Es wäre großartig, wenn der Compiler auf @ schließen würdconstexpr
, um Sie bei Ihrer Arbeit zu unterstützen. Vielleicht sollte es Sie auch jedes Mal warnen, wenn Sie diese Schlussfolgerung ziehen, und Sie dazu ermutigen, das @ explizit hinzuzufügeconstexpr
später. Aber es wäre trotzdem nützlich. Meine Sorge ist, dass es Dinge brechen könnte?
So weit, das einzige, was ich mir vorstellen kann, ist, dassconstexpr
Funktionen sind implizitinline
und es kann Situationen geben, in denen das Hinzufügen voninline
kann Dinge auf schlechte Weise verändern; Zum Beispiel, wenn Sie die Ein-Definition-Regel brechen.