36 #pragma GCC system_header
38 _GLIBCXX_BEGIN_NAMESPACE(std)
85 gslice(
const gslice&);
92 gslice& operator=(
const gslice&);
113 : _M_count(1), _M_start(0), _M_size(), _M_stride(), _M_index() {}
124 {
return --_M_count; }
129 template<
typename _Tp>
friend class valarray;
133 gslice::start()
const
134 {
return _M_index ? _M_index->_M_start : 0; }
141 gslice::stride()
const
148 : _M_index(new
gslice::_Indexer()) {}
153 : _M_index(new
gslice::_Indexer(__o, __l, __s)) {}
157 : _M_index(__g._M_index)
158 {
if (_M_index) _M_index->_M_increment_use(); }
163 if (_M_index && _M_index->_M_decrement_use() == 0)
171 __g._M_index->_M_increment_use();
172 if (_M_index && _M_index->_M_decrement_use() == 0)
174 _M_index = __g._M_index;
180 _GLIBCXX_END_NAMESPACE