Я хотел бы сделать что-то вроде следующего шаблона:
T* const pT = findT();
// Do some work
T* const pT2 = new T( *pT );
// Mutate the object pT2 refers to
delete pT;
// At this point, I want the scope of pT to end.
// I do not want the scope of pT2 to end
Я знаю, что могу закончить область видимости, заканчивая блок, но это заканчивается так:
T* pT2 = 0;
{
T* const pT = findT();
// Do some work
pT2 = new T( *pT );
// Mutate the object pT2 refers to
delete pT;
}
Это приводит к тому, что pT2 теряет свой константный квалификатор, потому что я должен назначить его после того, как он объявлен.
Я хочу свой торт и хочу его съесть, я хочу чистую константу и правильная область видимости!
Есть ли способ завершить область действия переменной, кроме окончания блока?Если нет, то планируете ли вы расширить стандарт для поддержки этого?