Я всегда думал, что хорошо иметь константные 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 для возвращенных локалей, или есть лучший способ справиться с этим?