Why oppose a good feature??

 

Finally is already implemented by Microsoft, so implementation difficulty = 0

 

From: Richard Hodges via Std-Proposals
Sent: 01 May 2022 14:59
To: std-proposals@lists.isocpp.org
Cc: Richard Hodges
Subject: Re: [std-proposals] finally keyword

 

 

 

On Sun, 1 May 2022 at 10:10, Abdullah Qasim via Std-Proposals <std-proposals@lists.isocpp.org> wrote:

If exception is thrown, no destructor is called.

 

Use a unique_ptr with a custom deleter to act as your "finally" clause. Other languages have it because they don't support RAII.

Here's an example:

template<class Item ,class Deleter>
auto make_finally(Item* item, Deleter del)
{
    return std::unique_ptr<Item, Deleter>(item, std::move(del));
}

extern void do_log(FILE* fp, std::string const& contents);

void append_file(std::filesystem::path const& p, std::string const& line)
{
    auto fin1  = make_finally(::fopen(p.c_str(), "wb+"), &::fclose);
    try
    {
        do_log(fin1.get(), line);
    }
    catch(...)
    {
        // handle error here
    }

    // finally happens here    
}

 

 

***MEMORY LEAK ALERT***

 

Finally is used for tasks performed regardless of thrown exception, but when exception is caught, control jumps to finally block.

 

Useful!

 

From: Peter C++ via Std-Proposals
Sent: 01 May 2022 13:04
To: std-proposals@lists.isocpp.org
Cc: Peter C++
Subject: Re: [std-proposals] finally keyword

 

that is a feature what destructors and SBRM are fir

 

available in standard library extensions TS2, as scope guards, but not approved to std for the better.(I am the author)

 

if there is a simple enough library solution, why should there be a language extension. 

 

watch a recording of one of my "what classes we design and how" to learn when destructors and clean up are actually desirable. 

sent from a mobile device so please excuse strange words due to autocorrection. 

Peter Sommerlad

+41-79-432 23 32

 

On 1 May 2022, at 09:52, Abdullah Qasim via Std-Proposals <std-proposals@lists.isocpp.org> wrote:



 

try {
  something();
} catch (...) {
  std::cerr << "exception caught!!";
}
 
std::clog << "No except caught!";
 
finally {                  // already Microsoft extension, but
  cleanup();             // should be in core language
}

 

 

--
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals

 

--
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals