Legacy Issue Number: 18463
Source: Remedy IT ( Johnny Willemsen)
CORBA::Exception should not use std::string type for name and repo_id for 2 reasons:
1. C++ standard conformance; member types like std::string are discouraged because their constructors may throw exceptions where std::exception and derivatives are expected not to throw exceptions themselves
2. (minor) performance; using std::string these member values are unnecessarily copied while they immutable constant strings only ever read, never mutated
Changing the members to const char* values makes CORBA::Exception and the CORBA::SystemException classes optimal and c++ standard conformant.
This will not be the case for CORBA::UserException derivatives as these may have IDL defined attributes having IDL defined types which may definitely throw exceptions. However the ORB should be expected to handle situations where creating user exceptions unexpectedly throws another exception.
Reported: CPP11 1.0 — Mon, 18 Feb 2013 05:00 GMT
Disposition: Resolved — CPP11 1.1
Update exception as proposed. During the discussion also it was proposed to define
what() as noexcept which also has been done
Updated: Fri, 6 Mar 2015 20:58 GMT
CPP1111 — CORBA::Exception should not use std::string type for name and repo_id
- Key: CPP1111-15
- OMG Task Force: IDL to C++11 1.1 RTF