vsk added a comment.

In https://reviews.llvm.org/D43662#1016950, @labath wrote:

> In https://reviews.llvm.org/D43662#1016939, @vsk wrote:
> > > What do you think about a syntax like:
> > > 
> > > lldb_utility::CleanUp cleanup_our(::close, our_socket); // The CleanUp 
> > > constructor creates the std::function internally
> >
> > @labath I find the current version of the code more readable, since the 
> > behavior of the cleanup is apparent in less time. And I'd prefer to keep 
> > the CleanUp utility very small, without any scope for expansion. I don't 
> > think the ergonomics of the new syntax outweigh the advantages of a simpler 
> > approach.
> I don't think this would complicate anything. It should literally be a matter 
> of replacing your constructor with:
>   template<typename F, typename... Args>
>   CleanUp(F &&f, Args &&..args)
>       : PerformCleanup(true), Clean(std::bind(std::forward<F>(f), 
> std::forward<Args>(args)...) {}
> Although I can see how you may find the other usage syntax more 
> understandable, so I am not adamant about this...

Thanks for sharing this (I haven't reached for parameter packs before :). I'll 
still maintain that having the lambda written-out explicitly requires less 
effort from prospective readers, but am happy to be outvoted on this one. 
Pavel, others, wdyt?


lldb-commits mailing list

Reply via email to