C++ Logo

std-proposals

Advanced search

Re: [std-proposals] Catch exception thrown from constructor of global object

From: Federico Kircheis <federico_at_[hidden]>
Date: Thu, 12 Jan 2023 16:34:28 +0100
On 2023-01-12 at 11:23, Frederick Virchanza Gotham via Std-Proposals
wrote:

>
>Now if you were to ask me . . . . I would almost go so far as to
>propose that C++26 should deprecate defining a global object that
>doesn't satisfy 'is_trivial' so that all such objects would be wrapped
>in an std::optional<T> and emplaced within the body of 'main', but of
>course I know that I won't get any support on that.


It would also not cover most use-cases, for example


----
/* const */ int i = function_that_throws();
int main(){
}
----
Also std::optional as global variable is problematic if inside a 
library, depending on the visibility of the symbols, the destructor 
might be executed more than once (and thus be UB)
Federico

Received on 2023-01-12 15:34:38