Checking at least operator[] would be useful http://gcc.gnu.org/ml/libstdc++/2012-01/msg00073.html I'm happy to do it, if noone beats me to it
Created attachment 26368 [details] Adds bounds checking to std::array and tr1::array in debug mode. I've attached a patch which adds bounds checking to std::array (C++0x) and std::tr1::array. The std::array patch keeps operator[] as constexpr.
I'll do it, the normal way, for std::array only.
Author: paolo Date: Wed Nov 7 00:42:19 2012 New Revision: 193278 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=193278 Log: 2012-11-06 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/51850 * include/debug/array: New, debug-mode implementation. * include/profile/array: New. * include/std/array: Adjust. * include/std/tuple: Just include <array>. * include/Makefile.am: Add. * include/Makefile.in: Regenerate. * testsuite/23_containers/array/debug/front1_neg.cc: New. * testsuite/23_containers/array/debug/ square_brackets_operator1_neg.cc: Likewise. * testsuite/23_containers/array/debug/front2_neg.cc: Likewise. * testsuite/23_containers/array/debug/ square_brackets_operator2_neg.cc: Likewise. * testsuite/23_containers/array/debug/back1_neg.cc: Likewise. * testsuite/23_containers/array/debug/back2_neg.cc: Likewise. * testsuite/23_containers/array/tuple_interface/get_neg.cc: Tweak to run only in normal-mode. * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc: Likewise. * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: New. * testsuite/23_containers/array/tuple_interface/ tuple_element_debug_neg.cc: Likewise. Added: trunk/libstdc++-v3/include/debug/array trunk/libstdc++-v3/include/profile/array trunk/libstdc++-v3/testsuite/23_containers/array/debug/ trunk/libstdc++-v3/testsuite/23_containers/array/debug/back1_neg.cc trunk/libstdc++-v3/testsuite/23_containers/array/debug/back2_neg.cc trunk/libstdc++-v3/testsuite/23_containers/array/debug/front1_neg.cc trunk/libstdc++-v3/testsuite/23_containers/array/debug/front2_neg.cc trunk/libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc trunk/libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc trunk/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_debug_neg.cc trunk/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/Makefile.am trunk/libstdc++-v3/include/Makefile.in trunk/libstdc++-v3/include/std/array trunk/libstdc++-v3/include/std/tuple trunk/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc trunk/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
Done.