C++ PATCH: PR 20599 (1/3)

Doug Gregor dgregor@cs.indiana.edu
Mon Sep 25 17:54:00 GMT 2006


On Sep 25, 2006, at 9:58 AM, Howard Hinnant wrote:
> I would prefer something more like:
>
> g++ my_source.cpp -enable_rvalue_refs -enable_variadic_templates - 
> enable_static_assert -lboost -lAcme

Whereas I would prefer, e.g.,

	g++ -std=c++0x -lboost -lAcme

Otherwise, users need to track exactly what we're done in each minor  
release to try out these features. For instance, with GCC 4.3.0 users  
might need to write:

	g++ my_source.cpp -enable_rvalue_refs -enable_variadic_templates - 
enable_static_assert -lboost -lAcme

Then for GCC 4.3.1 we implement more of the C++0x working draft, so  
we now have:

	g++ my_source.cpp -enable_rvalue_refs -enable_variadic_templates - 
enable_static_assert -enable-decltype -enable-auto -lboost -lAcme

Then maybe the committee changes its mind, so we yank a feature [*]  
from GCC 4.3.2 and get:

	g++ my_source.cpp -enable_rvalue_refs -enable_variadic_templates - 
enable-decltype -enable-auto -lboost -lAcme

Now users need to determine the patch level of g++ to enable C++0x  
features. If we have one flag, the variance in features from version  
to version will be queried through feature-test macros (supplied by  
the compiler). Users just decide whether they want the C++0x features  
or not.

When C++0x goes out the door, we add -std=c++09 (just guessing <g>)  
for the new standard and deprecate -std=c++0x. It's not much  
different from what we're already doing with -std=c9x and -std=c99.

	Cheers,
	Doug

[*] No, I'm not trying to eliminate static_assert; just illustrating  
the issue :)



More information about the Gcc-patches mailing list