C++ Logo

std-proposals

Advanced search

[std-proposals] Dummy names for dummy objects

From: Frederick Virchanza Gotham <cauldwell.thomas_at_[hidden]>
Date: Sat, 10 Jun 2023 15:27:28 +0100
Sometimes I have code like this:

void Func(void)
{
    OnScopeExit dummy( [](){ ::close(global_fd); } );

    // Do more stuff here
}

If I later amend this function so that further down there's another
'OnScopeExit', then I have to name the second one "dummy1", and the
third one "dummy2" and so on.

For the sake of making it easier to patch source files, I propose that
we can give an object a dummy name as follows:

void Func(void)
{
    OnScopeExit __dummy( [](){ /* Do Something */ } );

    // Do more stuff here

    OnScopeExit __dummy( [](){ /* Do Something */ } );

    // Do more stuff here

    OnScopeExit __dummy( [](){ /* Do Something */ } );
}

These objects don't have a name clash. If you try to access an object
by the name '__dummy', it accesses the most recently defined dummy
object:

void Func(void)
{
    OnScopeExit __dummy( [](){ /* Do Something */ } );

    // Do more stuff here
    _dummy.SomeMethod(); // refers to the object defined 3 lines above

    OnScopeExit __dummy( [](){ /* Do Something */ } );

    // Do more stuff here
    _dummy.SomeMethod(); // refers to the object defined 3 lines above

    OnScopeExit __dummy( [](){ /* Do Something */ } );
}

Received on 2023-06-10 14:27:38