Я всегда думал, что хорошо иметь константные locals const
void f() {
const resource_ptr p = get();
// ...
}
Однако на прошлой неделе я наблюдал за студентами, которые работали над упражнением на С++, и которые задавались вопросом о возвращении указателя const
resource_ptr f() {
const resource_ptr p = get();
// ...
return p;
}
Здесь, если компилятор не может применить NRVO (представьте себе какой-то сценарий, при котором это правда, возможно, возвращая один из двух указателей, в зависимости от условия), вдруг const
становится пессимизацией, потому что компилятор не может перейдите из p
, потому что он const.
Это хорошая идея, чтобы попытаться избежать const
для возвращенных локалей, или есть лучший способ справиться с этим?