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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage