Bug 51850 - debug mode for std::array and tr1::array
Summary: debug mode for std::array and tr1::array
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: libstdc++ (show other bugs)
Version: 4.7.0
: P3 enhancement
Target Milestone: 4.8.0
Assignee: Paolo Carlini
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-01-13 17:37 UTC by Jonathan Wakely
Modified: 2012-11-07 00:43 UTC (History)
1 user (show)

See Also:
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. (1.70 KB, patch)
2012-01-18 16:35 UTC, Edward Rosten
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
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.