Bug 51850

Summary: debug mode for std::array and tr1::array
Product: gcc Reporter: Jonathan Wakely <redi>
Component: libstdc++Assignee: Paolo Carlini <paolo.carlini>
Status: RESOLVED FIXED    
Severity: enhancement CC: daniel.kruegler
Priority: P3    
Version: 4.7.0   
Target Milestone: 4.8.0   
Host: Target:
Build: Known to work:
Known to fail: Last reconfirmed: 2012-03-22 00:00:00
Attachments: Adds bounds checking to std::array and tr1::array in debug mode.

Description Jonathan Wakely 2012-01-13 17:37:02 UTC
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
Comment 1 Edward Rosten 2012-01-18 16:35:40 UTC
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.
Comment 2 Paolo Carlini 2012-03-22 10:51:08 UTC
I'll do it, the normal way, for std::array only.
Comment 3 paolo@gcc.gnu.org 2012-11-07 00:42:26 UTC
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
Comment 4 Paolo Carlini 2012-11-07 00:43:19 UTC
Done.