Да, это вполне приемлемая практика и может быть очень полезным для более, чем просто отдельные объекты. Например блокировки общих ресурсов, а некоторые операции выполняются и отпирания его автоматически, когда он выходит из области видимости:
// normal program stuff here ...
// introduce an open scope
{
std::lock_guard<std::mutex> lock(mtx); // lock a resource in this scope
// do stuff with the resource ...
// at the end of the scope the lock object is destroyed
// and the resource becomes available to other threads
}
// normal program stuff continues ...
Примечание: В то время как этот код в ладно способ создать и сразу уничтожить что-то, * тот факт, что это полезно вещь делать * - запах кода. В хорошо продуманной программе этот код не принесет ничего полезного! – immibis