Учитывая две программы, в которых единственной разницей в исходном коде является наличие или отсутствие одного constexpr
, возможно ли, что значение программы изменится?
Другими словами, если бы был параметр компилятора, чтобы попросить компилятор попытаться действительно усложнить вывод constexpr
, где это возможно, нарушит ли он существующий стандартный код и/или изменит его значение в плохих отношениях?
Представьте, что вы имеете дело с кодовой базой, в которой первоначальный разработчик забыл включить constexpr
в места, где это было возможно, возможно, код написан до С++ 11. Было бы замечательно, если бы компилятор сделал вывод constexpr
, чтобы помочь вам справиться с вашей работой. Конечно, возможно, он также должен предупреждать каждый раз, когда он делает это заключение, и поощряя вас явно добавить constexpr
позже. Но это было бы полезно. Мое беспокойство в том, что это может нарушить ситуацию?
Пока, единственное, о чем я могу думать, состоит в том, что функции constexpr
неявно inline
, и могут быть ситуации, когда добавление inline
может изменить ситуацию по-разному; например, если вы нарушаете правило с одним определением.