Если я делаю
typedef void Cb();
int foo(int const& a, Cb cb) {
int x = a;
cb();
return x - a;
}
и скомпилировать с g++ -O3 -save-temps -c foo.cpp
, я вижу, что вычитание сохраняется, а если cb();
закомментировано, вся функция оптимизируется на
xorl %eax, %eax
Есть ли что-то, что я могу сделать для спецификации параметра a
, так что вычитание будет оптимизировано независимо от вызова cb()
и без принуждения a
к уникальной ссылке (то есть, что это может быть указано в другом месте, но что ни одна из этих ссылок не будет изменена)?