BDE 4.14.0 Production release
Loading...
Searching...
No Matches
bslstl_stringstream.h
Go to the documentation of this file.
1/// @file bslstl_stringstream.h
2///
3/// The content of this file has been pre-processed for Doxygen.
4///
5
6
7// bslstl_stringstream.h -*-C++-*-
8#ifndef INCLUDED_BSLSTL_STRINGSTREAM
9#define INCLUDED_BSLSTL_STRINGSTREAM
10
11#include <bsls_ident.h>
12BSLS_IDENT("$Id: $")
13
14/// @defgroup bslstl_stringstream bslstl_stringstream
15/// @brief Provide a C++03-compatible `stringstream` class.
16/// @addtogroup bsl
17/// @{
18/// @addtogroup bslstl
19/// @{
20/// @addtogroup bslstl_stringstream
21/// @{
22///
23/// <h1> Outline </h1>
24/// * <a href="#bslstl_stringstream-purpose"> Purpose</a>
25/// * <a href="#bslstl_stringstream-classes"> Classes </a>
26/// * <a href="#bslstl_stringstream-description"> Description </a>
27/// * <a href="#bslstl_stringstream-memory-allocation"> Memory Allocation </a>
28/// * <a href="#bslstl_stringstream-bslma-style-allocators"> bslma-Style Allocators </a>
29/// * <a href="#bslstl_stringstream-usage"> Usage </a>
30/// * <a href="#bslstl_stringstream-example-1-basic-input-and-output-operations"> Example 1: Basic Input and Output Operations </a>
31///
32/// # Purpose {#bslstl_stringstream-purpose}
33/// Provide a C++03-compatible `stringstream` class.
34///
35/// # Classes {#bslstl_stringstream-classes}
36///
37/// - bsl::stringstream: C++03-compatible `stringstream` class
38///
39/// **Canonical header:** bsl_sstream.h
40///
41/// @see
42///
43/// # Description {#bslstl_stringstream-description}
44/// This component is for internal use only. Please include
45/// `<bsl_sstream.h>` instead.
46///
47/// This component defines a class template, `bsl::basic_stringstream`,
48/// implementing a standard stream that provides a constructor and manipulator
49/// (`str`) that allow clients to directly set the internal sequence of
50/// characters that is accessed (or modified) by the stream, as well as an
51/// accessor (`str`) for obtaining a string having the same sequence of
52/// characters to which the stream currently refers (see 27.8.5 [stringstream]
53/// of the C++11 standard). This component also defines two standard aliases,
54/// `bsl::stringstream` and `bsl::wstringstream`, that refer to specializations
55/// of the `bsl::basic_stringstream` template for `char` and `wchar_t` types,
56/// respectively. The `bsl::basic_stringstream` template has three parameters,
57/// `CHAR_TYPE`, `CHAR_TRAITS`, and `ALLOCATOR`. The `CHAR_TYPE` and
58/// `CHAR_TRAITS` parameters respectively define the character type for the
59/// string-stream and a type providing a set of operations the string-stream
60/// will use to manipulate characters of that type, which must meet the
61/// character traits requirements defined by the C++11 standard, 21.2
62/// [char.traits]. The `ALLOCATOR` template parameter is described in the
63/// "Memory Allocation" section below.
64///
65/// ## Memory Allocation {#bslstl_stringstream-memory-allocation}
66///
67///
68/// The type supplied as a string-stream's `ALLOCATOR` template parameter
69/// determines how that string-stream will allocate memory. The
70/// @ref basic_stringstream template supports allocators meeting the requirements
71/// of the C++11 standard, 17.6.3.5 [allocator.requirements]; in addition, it
72/// supports scoped-allocators derived from the `bslma::Allocator` memory
73/// allocation protocol. Clients intending to use `bslma`-style allocators
74/// should use `bsl::allocator`, which provides a C++11 standard-compatible
75/// adapter for a `bslma::Allocator` object. Note that the standard aliases
76/// `bsl::stringstream` and `bsl::wstringstream` both use `bsl::allocator`.
77///
78/// ### bslma-Style Allocators {#bslstl_stringstream-bslma-style-allocators}
79///
80///
81/// If the type supplied for the `ALLOCATOR` template parameter of an
82/// `stringstream` instantiation is `bsl::allocator`, then objects of that
83/// string-stream type will conform to the standard behavior of a
84/// `bslma`-allocator-enabled type. Such a string-stream accepts an optional
85/// `bslma::Allocator` argument at construction. If the address of a
86/// `bslma::Allocator` object is explicitly supplied at construction, it will be
87/// used to supply memory for the string-stream throughout its lifetime;
88/// otherwise, the string-stream will use the default allocator installed at the
89/// time of the string-stream's construction (see @ref bslma_default ).
90///
91/// ## Usage {#bslstl_stringstream-usage}
92///
93///
94/// This section illustrates intended use of this component.
95///
96/// ### Example 1: Basic Input and Output Operations {#bslstl_stringstream-example-1-basic-input-and-output-operations}
97///
98///
99/// The following example demonstrates the use of `bsl::stringstream` to read
100/// and write data of various types to a `bsl::string` object.
101///
102/// Suppose we want to implement a simplified converter between a pair of
103/// generic types, `TYPE1` and `TYPE2`. We use `bsl::stringstream` to implement
104/// the `lexicalCast` function. We write the data of type `TYPE1` into the
105/// stream with `operator<<` and then read it back as the data of `TYPE2` with
106/// `operator>>`:
107/// @code
108/// template <class TYPE2, class TYPE1>
109/// TYPE2 lexicalCast(const TYPE1& what)
110/// {
111/// bsl::stringstream converter;
112/// converter << what;
113///
114/// TYPE2 val;
115/// converter >> val;
116/// return val;
117/// }
118/// @endcode
119/// Finally, we verify that the `lexicalCast` function works on some simple test
120/// cases:
121/// @code
122/// assert(lexicalCast<int>("1234") == 1234);
123///
124/// assert(lexicalCast<short>("-5") == -5);
125///
126/// assert(lexicalCast<bsl::string>("abc") == "abc");
127///
128/// assert(lexicalCast<bsl::string>(1234) == "1234");
129///
130/// assert(lexicalCast<short>(-5) == -5);
131/// @endcode
132/// @}
133/** @} */
134/** @} */
135
136/** @addtogroup bsl
137 * @{
138 */
139/** @addtogroup bslstl
140 * @{
141 */
142/** @addtogroup bslstl_stringstream
143 * @{
144 */
145
146#include <bslscm_version.h>
147
148#include <bslma_isstdallocator.h>
150
151#include <bslmf_enableif.h>
152#include <bslmf_issame.h>
153#include <bslmf_movableref.h>
154
156#include <bsls_keyword.h>
157#include <bsls_libraryfeatures.h>
158#include <bsls_platform.h>
159
160#include <bslstl_string.h>
161#include <bslstl_stringbuf.h>
162#include <bslstl_stringview.h>
163
164#include <ios>
165
166#include <iostream>
167
168#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_STREAM_MOVE
169# include <utility>
170#endif
171
172namespace bsl {
173
174 // ========================
175 // class basic_stringstream
176 // ========================
177
178/// This class implements a standard stream providing operations using
179/// `bsl::basic_string` for modifying or accessing the sequence of
180/// characters read from, or written to, the stream.
181template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
183 : private StringBufContainer<CHAR_TYPE, CHAR_TRAITS, ALLOCATOR>
184 , public std::basic_iostream<CHAR_TYPE, CHAR_TRAITS> {
185
186 private:
187 // PRIVATE TYPES
190 BaseType;
193 typedef std::basic_iostream<CHAR_TYPE, CHAR_TRAITS> BaseStream;
194 typedef std::ios_base ios_base;
195
196 typedef BloombergLP::bslmf::MovableRefUtil MoveUtil;
197
198 private:
199 // NOT IMPLEMENTED
200 basic_stringstream(const basic_stringstream&); // = delete
201 basic_stringstream& operator=(const basic_stringstream&); // = delete
202
203 public:
204 // TYPES
205 typedef CHAR_TYPE char_type;
206 typedef CHAR_TRAITS traits_type;
207 typedef ALLOCATOR allocator_type;
208 typedef typename traits_type::int_type int_type;
209 typedef typename traits_type::off_type off_type;
210 typedef typename traits_type::pos_type pos_type;
211
212 // CREATORS
213
214 explicit
216 explicit
217 basic_stringstream(ios_base::openmode modeBitMask,
219 explicit
220 basic_stringstream(const StringType& initialString,
222 /// Create a @ref basic_stringstream object. Optionally specify a
223 /// `modeBitMask` indicating whether the underlying stream-buffer may be
224 /// read from, written to, or both (`rdbuf` is created using
225 /// `modeBitMask`). If `modeBitMask` is not supplied, `rdbuf` will be
226 /// created using `ios_base::in | ios_base::out`. Optionally specify an
227 /// `initialString` indicating the initial sequence of characters that
228 /// this stream may access or manipulate. If `initialString` is not
229 /// supplied, the initial sequence of characters will be empty.
230 /// Optionally specify the `allocator` used to supply memory. If
231 /// `allocator` is not supplied, a default-constructed object of the
232 /// (template parameter) `ALLOCATOR` type is used. If the `ALLOCATOR`
233 /// argument is of type `bsl::allocator` (the default), then
234 /// `allocator`, if supplied, shall be convertible to
235 /// `bslma::Allocator *`. If the `ALLOCATOR` argument is of type
236 /// `bsl::allocator` and `allocator` is not supplied, the currently
237 /// installed default allocator will be used to supply memory. If
238 /// `initialString` is passed by `MovableRef`, it is left in a valid but
239 /// unspecified state.
240 basic_stringstream(const StringType& initialString,
241 ios_base::openmode modeBitMask,
243
244 explicit
246 BloombergLP::bslmf::MovableRef<StringType> initialString);
248 BloombergLP::bslmf::MovableRef<StringType> initialString,
251 BloombergLP::bslmf::MovableRef<StringType> initialString,
252 ios_base::openmode modeBitMask);
253 /// Create a @ref basic_stringstream object. Use the specified
254 /// `initialString` indicating the initial sequence of characters that
255 /// this buffer will access or manipulate. Optionally specify a
256 /// `modeBitMask` indicating whether this buffer may be read from,
257 /// written to, or both. If `modeBitMask` is not supplied, this buffer
258 /// is created with `ios_base::in | ios_base::out`. Optionally specify
259 /// the `allocator` used to supply memory. If `allocator` is not
260 /// supplied, the allocator in `initialString` is used. `initialString`
261 /// is left in a valid but unspecified state.
263 BloombergLP::bslmf::MovableRef<StringType> initialString,
264 ios_base::openmode modeBitMask,
266
267 /// Create a @ref basic_stringstream object. Use the specified
268 /// `initialString` indicating the initial sequence of characters that
269 /// this stream will access or manipulate. `rdbuf` is created using
270 /// `ios_base::in | ios_base::out`. Optionally specify the `allocator`
271 /// used to supply memory. If `allocator` is not supplied, a
272 /// default-constructed object of the (template parameter) `ALLOCATOR`
273 /// type is used. If the `ALLOCATOR` argument is of type
274 /// `bsl::allocator` (the default), then `allocator`, if supplied, shall
275 /// be convertible to `bslma::Allocator *`. If the `ALLOCATOR` argument
276 /// is of type `bsl::allocator` and `allocator` is not supplied, the
277 /// currently installed default allocator will be used to supply memory.
278 template <class SALLOC>
281 initialString,
283 typename bsl::enable_if<
284 !bsl::is_same<ALLOCATOR, SALLOC>::value, void *>::type = 0)
285 : BaseType(initialString.begin(),
286 initialString.end(),
287 ios_base::in | ios_base::out,
288 allocator)
289 , BaseStream(BaseType::rdbuf())
290 {
291 // Note: implemented inline due to Sun CC compilation error.
292 }
293
294 /// Create a @ref basic_stringstream object. Use the specified
295 /// `initialString` indicating the initial sequence of characters that
296 /// this stream will access or manipulate. Use the specified
297 /// `modeBitMask` to indicate whether this stream may be read from,
298 /// written to, or both. Optionally specify the `allocator` used to
299 /// supply memory. If `allocator` is not supplied, a
300 /// default-constructed object of the (template parameter) `ALLOCATOR`
301 /// type is used. If the `ALLOCATOR` argument is of type
302 /// `bsl::allocator` (the default), then `allocator`, if supplied, shall
303 /// be convertible to `bslma::Allocator *`. If the `ALLOCATOR` argument
304 /// is of type `bsl::allocator` and `allocator` is not supplied, the
305 /// currently installed default allocator will be used to supply memory.
306 template <class SALLOC>
309 initialString,
310 ios_base::openmode modeBitMask,
312 typename bsl::enable_if<
313 !bsl::is_same<ALLOCATOR, SALLOC>::value, void *>::type = 0)
314 : BaseType(initialString.begin(),
315 initialString.end(),
316 modeBitMask,
317 allocator)
318 , BaseStream(BaseType::rdbuf())
319 {
320 // Note: implemented inline due to Sun CC compilation error.
321 }
322
323
324#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_STREAM_MOVE
325 /// Create a @ref basic_stringstream object having the same value as the
326 /// specified `original` object by moving the contents of `original` to
327 /// the newly-created object. `original` is left in a valid but
328 /// unspecified state.
330#endif
331
332 /// Destroy this object.
334
335 // MANIPULATORS
336
337#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_STREAM_MOVE
338 /// Assign to this object the value of the specified `rhs`, and return a
339 /// reference providing modifiable access to this object. The contents
340 /// of `rhs` are move-assigned to this object. `rhs` is left in a valid
341 /// but unspecified state.
342 basic_stringstream& operator=(basic_stringstream&& rhs);
343#endif
344
345 void str(const StringType& value);
346 /// Reset the internally buffered sequence of characters maintained by
347 /// this stream to the specified `value`. If `value` is passed by
348 /// `MovableRef`, it is left in a valid but unspecified state.
349 void str(BloombergLP::bslmf::MovableRef<StringType> value);
350 template <class SALLOC>
351 typename
354 {
355 // Note: implemented inline due to Sun CC compilation error.
356 return this->rdbuf()->str(value);
357 }
358
359#ifdef BSLS_COMPILERFEATURES_SUPPORT_REF_QUALIFIERS
360 /// Return the internally buffered sequence of characters maintained by
361 /// this stream, leaving the stream empty.
362 StringType str() &&;
363#endif
364
365 // ACCESSORS
366
367 /// Return an address providing modifiable access to the
368 /// @ref basic_stringbuf object that is internally used by this stream
369 /// object to buffer unformatted characters.
370 StreamBufType *rdbuf() const;
371
372 /// Return the internally buffered sequence of characters maintained by
373 /// this stream object.
374#ifdef BSLS_COMPILERFEATURES_SUPPORT_REF_QUALIFIERS
375 StringType str() const &;
376#else
377 StringType str() const;
378#endif
379
380#ifndef BSLS_PLATFORM_CMP_SUN
381 // To be enabled once DRQS 168075157 is resolved
382
383 /// Return a copy of the internally buffered sequence of characters
384 /// maintained by this stream object in a @ref basic_string that uses the
385 /// specified `allocator`.
386 template <class SALLOC>
387 typename bsl::enable_if<
388 bsl::IsStdAllocator<SALLOC>::value,
390 str(const SALLOC& allocator) const
391 {
392 // Note: implemented inline due to Sun CC compilation error.
393 return this->rdbuf()->str(allocator);
394 }
395#endif
396
397 /// Return a view of the internally buffered sequence of characters
398 /// maintained by this stream object.
399 ViewType view() const BSLS_KEYWORD_NOEXCEPT;
400};
401
402// STANDARD TYPEDEFS
403typedef basic_stringstream<char, char_traits<char>, allocator<char> >
405typedef basic_stringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >
407
408} // close namespace bsl
409
410// TYPE TRAITS
411
412namespace bslma {
413
414template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
416 bsl::basic_stringstream<CHAR_TYPE, CHAR_TRAITS, ALLOCATOR> >
418{};
419
420} // close namespace bslma
421
422
423namespace bsl {
424
425// ============================================================================
426// TEMPLATE FUNCTION DEFINITIONS
427// ============================================================================
428
429 // ------------------------
430 // class basic_stringstream
431 // ------------------------
432
433// CREATORS
434template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
435inline
438: BaseType(ios_base::in | ios_base::out, allocator)
439, BaseStream(BaseType::rdbuf())
440{
441}
442
443template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
444inline
446 basic_stringstream(ios_base::openmode modeBitMask,
448: BaseType(modeBitMask, allocator)
449, BaseStream(BaseType::rdbuf())
450{
451}
452
453template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
454inline
456basic_stringstream(const StringType& initialString,
458: BaseType(initialString, ios_base::in | ios_base::out, allocator)
459, BaseStream(BaseType::rdbuf())
460{
461}
462
463template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
464inline
466basic_stringstream(const StringType& initialString,
467 ios_base::openmode modeBitMask,
469: BaseType(initialString, modeBitMask, allocator)
470, BaseStream(BaseType::rdbuf())
471{
472}
473
474template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
475inline
477basic_stringstream(BloombergLP::bslmf::MovableRef<StringType> initialString)
478: BaseType(MoveUtil::move(initialString), ios_base::in | ios_base::out)
479, BaseStream(BaseType::rdbuf())
480{
481}
482
483template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
484inline
486basic_stringstream(BloombergLP::bslmf::MovableRef<StringType> initialString,
488: BaseType(MoveUtil::move(initialString),
489 ios_base::in | ios_base::out,
490 allocator)
491, BaseStream(BaseType::rdbuf())
492{
493}
494
495template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
496inline
498basic_stringstream(BloombergLP::bslmf::MovableRef<StringType> initialString,
499 ios_base::openmode modeBitMask)
500: BaseType(MoveUtil::move(initialString), modeBitMask)
501, BaseStream(BaseType::rdbuf())
502{
503}
504
505template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
506inline
508basic_stringstream(BloombergLP::bslmf::MovableRef<StringType> initialString,
509 ios_base::openmode modeBitMask,
511: BaseType(MoveUtil::move(initialString), modeBitMask, allocator)
512, BaseStream(BaseType::rdbuf())
513{
514}
515
516#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_STREAM_MOVE
517template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
518inline
521: BaseType(std::move(original))
522, BaseStream(std::move(original))
523{
524 BaseStream::set_rdbuf(BaseType::rdbuf());
525}
526#endif
527
528// MANIPULATORS
529#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_STREAM_MOVE
530template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
531inline
532basic_stringstream<CHAR_TYPE, CHAR_TRAITS, ALLOCATOR>&
533basic_stringstream<CHAR_TYPE, CHAR_TRAITS, ALLOCATOR>::
534operator=(basic_stringstream&& rhs)
535{
536 this->BaseType::operator=(std::move(rhs));
537 this->BaseStream::operator=(std::move(rhs));
538
539 return *this;
540}
541#endif
542
543template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
544inline
546 const StringType& value)
547{
548 this->rdbuf()->str(value);
549}
550
551template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
552inline
554 BloombergLP::bslmf::MovableRef<StringType> value)
555{
556 this->rdbuf()->str(MoveUtil::move(value));
557}
558
559#ifdef BSLS_COMPILERFEATURES_SUPPORT_REF_QUALIFIERS
560template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
561inline
564{
565 return std::move(*this->rdbuf()).str();
566}
567#endif
568
569// ACCESSORS
570template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
571inline
572typename basic_stringstream<CHAR_TYPE, CHAR_TRAITS, ALLOCATOR>::StreamBufType *
574{
575 return this->BaseType::rdbuf();
576}
577
578#ifdef BSLS_COMPILERFEATURES_SUPPORT_REF_QUALIFIERS
579template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
580inline
583{
584 return this->rdbuf()->str();
585}
586#else
587template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
588inline
589typename basic_stringstream<CHAR_TYPE, CHAR_TRAITS, ALLOCATOR>::StringType
591{
592 return this->rdbuf()->str();
593}
594#endif
595
596template <class CHAR_TYPE, class CHAR_TRAITS, class ALLOCATOR>
597inline
601{
602 return this->rdbuf()->view();
603}
604
605} // close namespace bsl
606
607#endif
608
609// ----------------------------------------------------------------------------
610// Copyright 2013 Bloomberg Finance L.P.
611//
612// Licensed under the Apache License, Version 2.0 (the "License");
613// you may not use this file except in compliance with the License.
614// You may obtain a copy of the License at
615//
616// http://www.apache.org/licenses/LICENSE-2.0
617//
618// Unless required by applicable law or agreed to in writing, software
619// distributed under the License is distributed on an "AS IS" BASIS,
620// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
621// See the License for the specific language governing permissions and
622// limitations under the License.
623// ----------------------------- END-OF-FILE ----------------------------------
624
625/** @} */
626/** @} */
627/** @} */
Definition bslstl_stringbuf.h:746
StreamBufType * rdbuf() const
Definition bslstl_stringbuf.h:864
Definition bslma_bslallocator.h:580
Definition bslstl_stringview.h:441
Definition bslstl_string.h:1281
Definition bslstl_stringbuf.h:245
void str(const StringType &value)
Definition bslstl_stringbuf.h:1538
Definition bslstl_stringstream.h:184
CHAR_TRAITS traits_type
Definition bslstl_stringstream.h:206
traits_type::pos_type pos_type
Definition bslstl_stringstream.h:210
StringType str() const
Definition bslstl_stringstream.h:590
traits_type::int_type int_type
Definition bslstl_stringstream.h:208
basic_stringstream(const bsl::basic_string< CHAR_TYPE, CHAR_TRAITS, SALLOC > &initialString, const allocator_type &allocator=allocator_type(), typename bsl::enable_if< !bsl::is_same< ALLOCATOR, SALLOC >::value, void * >::type=0)
Definition bslstl_stringstream.h:279
bsl::enable_if< bsl::IsStdAllocator< SALLOC >::value, basic_string< CHAR_TYPE, CHAR_TRAITS, SALLOC > >::type str(const SALLOC &allocator) const
Definition bslstl_stringstream.h:390
traits_type::off_type off_type
Definition bslstl_stringstream.h:209
~basic_stringstream()=default
Destroy this object.
bsl::enable_if<!bsl::is_same< ALLOCATOR, SALLOC >::value, void >::type str(const basic_string< CHAR_TYPE, CHAR_TRAITS, SALLOC > &value)
Definition bslstl_stringstream.h:353
CHAR_TYPE char_type
Definition bslstl_stringstream.h:205
StreamBufType * rdbuf() const
Definition bslstl_stringstream.h:573
ALLOCATOR allocator_type
Definition bslstl_stringstream.h:207
ViewType view() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_stringstream.h:599
basic_stringstream(const bsl::basic_string< CHAR_TYPE, CHAR_TRAITS, SALLOC > &initialString, ios_base::openmode modeBitMask, const allocator_type &allocator=allocator_type(), typename bsl::enable_if< !bsl::is_same< ALLOCATOR, SALLOC >::value, void * >::type=0)
Definition bslstl_stringstream.h:307
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
#define BSLS_KEYWORD_NOEXCEPT
Definition bsls_keyword.h:632
Definition bdlb_printmethods.h:283
T::iterator begin(T &container)
Definition bslstl_iterator.h:1495
T::iterator end(T &container)
Definition bslstl_iterator.h:1523
Definition balxml_encoderoptions.h:68
Definition bdldfp_decimal.h:5188
Definition bslmf_enableif.h:525
Definition bslmf_issame.h:146
Definition bslma_usesbslmaallocator.h:343