[patch-rfc] N2179: Exception Propagation in C++

Sebastian Redl wasti@windmuehlgasse.getdesigned.at
Mon Jul 21 14:32:00 GMT 2008


Paolo Carlini wrote:
>> Is __GXX_EXPERIMENTAL_CXX0X__ defined during the compilation
>> of libsupc++ itself?
>>     
>
> At the moment is not defined, because there are no reasons to do that. Maybe you want to arrange things in such a way that it can be safely defined. For sure, however, when the user normally includes <exception> in its source without afterwards passing -std=c++0x, he doesn't want to see in std:: anything having to do with exception_ptr and more generally the C++0x features specified in N2179...
>   
That's understandable. However, my problem is simple: <exception> 
contains the definition of exception_ptr. Various source files of 
libsupc++ contain implementations of its members, as well as the three 
functions using it. These need to see the definition of exception_ptr.

I see three solutions:
1) Compile libsupc++ in experimental C++0x mode.
2) Add another symbol (or there may be an existing one) during the 
libsupc++ build that I can use as an alternate in making the definition 
visible, i.e.

#if defined(__GXX_EXPERIMENTAL_CXX0X__) || 
defined(__GXX_BUILDING_LIBSUPCXX__)
class exception_ptr ...

3) Define my own symbol in the implementing source files, before 
including the relevant headers. However, while this solution is the 
least intrusive towards the whole of GCC, it doesn't appeal to me.

Sebastian



More information about the Gcc-patches mailing list