This feels unsafe. What should be the result of is_initialized() after get_client_terminate_cxx?
false
Can we simplify the logic, so that handling repeated initializations is contained within the if and we exit the function there?
I wouldn't suppress such an action. Re-initialization was introduced in order to simplify the code in c++, so we don't have to call terminate explicitly every time. This function (initialize) therefore stands for initialization/re-initialization. I don't know, I feel pretty good about this, could you specify what exactly is unsafe here? Or any "real" arguments against the current solution?