libstdc++
stl_raw_storage_iter.h
Go to the documentation of this file.
1
// -*- C++ -*-
2
3
// Copyright (C) 2001-2013 Free Software Foundation, Inc.
4
//
5
// This file is part of the GNU ISO C++ Library. This library is free
6
// software; you can redistribute it and/or modify it under the
7
// terms of the GNU General Public License as published by the
8
// Free Software Foundation; either version 3, or (at your option)
9
// any later version.
10
11
// This library is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
// GNU General Public License for more details.
15
16
// Under Section 7 of GPL version 3, you are granted additional
17
// permissions described in the GCC Runtime Library Exception, version
18
// 3.1, as published by the Free Software Foundation.
19
20
// You should have received a copy of the GNU General Public License and
21
// a copy of the GCC Runtime Library Exception along with this program;
22
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23
// <http://www.gnu.org/licenses/>.
24
25
/*
26
*
27
* Copyright (c) 1994
28
* Hewlett-Packard Company
29
*
30
* Permission to use, copy, modify, distribute and sell this software
31
* and its documentation for any purpose is hereby granted without fee,
32
* provided that the above copyright notice appear in all copies and
33
* that both that copyright notice and this permission notice appear
34
* in supporting documentation. Hewlett-Packard Company makes no
35
* representations about the suitability of this software for any
36
* purpose. It is provided "as is" without express or implied warranty.
37
*
38
*
39
* Copyright (c) 1996
40
* Silicon Graphics Computer Systems, Inc.
41
*
42
* Permission to use, copy, modify, distribute and sell this software
43
* and its documentation for any purpose is hereby granted without fee,
44
* provided that the above copyright notice appear in all copies and
45
* that both that copyright notice and this permission notice appear
46
* in supporting documentation. Silicon Graphics makes no
47
* representations about the suitability of this software for any
48
* purpose. It is provided "as is" without express or implied warranty.
49
*/
50
51
/** @file bits/stl_raw_storage_iter.h
52
* This is an internal header file, included by other library headers.
53
* Do not attempt to use it directly. @headername{memory}
54
*/
55
56
#ifndef _STL_RAW_STORAGE_ITERATOR_H
57
#define _STL_RAW_STORAGE_ITERATOR_H 1
58
59
namespace
std _GLIBCXX_VISIBILITY(default)
60
{
61
_GLIBCXX_BEGIN_NAMESPACE_VERSION
62
63
/**
64
* This iterator class lets algorithms store their results into
65
* uninitialized memory.
66
*/
67
template
<
class
_OutputIterator,
class
_Tp>
68
class
raw_storage_iterator
69
:
public
iterator
<output_iterator_tag, void, void, void, void>
70
{
71
protected
:
72
_OutputIterator _M_iter;
73
74
public
:
75
explicit
76
raw_storage_iterator
(_OutputIterator __x)
77
: _M_iter(__x) {}
78
79
raw_storage_iterator
&
80
operator*() {
return
*
this
; }
81
82
raw_storage_iterator
&
83
operator=(
const
_Tp& __element)
84
{
85
std::_Construct
(
std::__addressof
(*_M_iter), __element);
86
return
*
this
;
87
}
88
89
raw_storage_iterator<_OutputIterator, _Tp>
&
90
operator++()
91
{
92
++_M_iter;
93
return
*
this
;
94
}
95
96
raw_storage_iterator<_OutputIterator, _Tp>
97
operator++(
int
)
98
{
99
raw_storage_iterator<_OutputIterator, _Tp>
__tmp = *
this
;
100
++_M_iter;
101
return
__tmp;
102
}
103
};
104
105
_GLIBCXX_END_NAMESPACE_VERSION
106
}
// namespace
107
108
#endif
include
bits
stl_raw_storage_iter.h
Generated by
1.8.3.1