9#ifndef INCLUDED_BDLB_NULLABLEVALUEREF
10#define INCLUDED_BDLB_NULLABLEVALUEREF
120#include <bdlscm_version.h>
138#if BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
142# define COMPILING_BDLB_NULLABLEVALUEREF_H
144# undef COMPILING_BDLB_NULLABLEVALUEREF_H
151class ConstNullableValueRef;
166#ifndef BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT
173 typedef BloombergLP::bsls::UnspecifiedBool<NullableValueRef>
175 typedef typename UnspecifiedBoolUtil::BoolType UnspecifiedBool;
185 bool d_isTargetOptional;
273#ifdef BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT
281 return UnspecifiedBoolUtil::makeValue(
has_value());
289 template <
class ANY_TYPE>
290 TYPE
value_or(
const ANY_TYPE& default_value)
const;
293#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
301 template <
class... ARGS>
352 "Use 'has_value() ? &value() : address' instead")
353 const TYPE *addressOr(const TYPE *address) const;
355#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
370 template <
class... ARGS>
372 "Use 'emplace' instead")
373 TYPE& makeValueInplace(ARGS&&... args);
377 "Use 'value_or' instead")
382 TYPE valueOr(const TYPE& otherValue) const;
389 const TYPE *valueOrNull() const;
398template <class HASHALG, class TYPE>
409template <class LHS_TYPE, class RHS_TYPE>
419template <class LHS_TYPE, class RHS_TYPE>
421 const RHS_TYPE& rhs);
422template <class LHS_TYPE, class RHS_TYPE>
423bool operator==(const LHS_TYPE& lhs,
432template <class LHS_TYPE, class RHS_TYPE>
442template <class LHS_TYPE, class RHS_TYPE>
444 const RHS_TYPE& rhs);
445template <class LHS_TYPE, class RHS_TYPE>
446bool operator!=(const LHS_TYPE& lhs,
455template <class LHS_TYPE, class RHS_TYPE>
462template <class LHS_TYPE, class RHS_TYPE>
464 const RHS_TYPE& rhs);
469template <class LHS_TYPE, class RHS_TYPE>
470bool operator<(const LHS_TYPE& lhs,
479template <class LHS_TYPE, class RHS_TYPE>
487template <class LHS_TYPE, class RHS_TYPE>
489 const RHS_TYPE& rhs);
495template <class LHS_TYPE, class RHS_TYPE>
496bool operator<=(const LHS_TYPE& lhs,
506template <class LHS_TYPE, class RHS_TYPE>
514template <class LHS_TYPE, class RHS_TYPE>
516 const RHS_TYPE& rhs);
522template <class LHS_TYPE, class RHS_TYPE>
523bool operator>(const LHS_TYPE& lhs,
532template <class LHS_TYPE, class RHS_TYPE>
540template <class LHS_TYPE, class RHS_TYPE>
542 const RHS_TYPE& rhs);
548template <class LHS_TYPE, class RHS_TYPE>
549bool operator>=(const LHS_TYPE& lhs,
636#ifndef BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT
643 typedef BloombergLP::bsls::UnspecifiedBool<ConstNullableValueRef>
645 typedef typename UnspecifiedBoolUtil::BoolType UnspecifiedBool;
651 const void *d_target_p;
655 bool d_isTargetOptional;
747#ifdef BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT
755 return UnspecifiedBoolUtil::makeValue(
has_value());
763 template <
class ANY_TYPE>
764 TYPE
value_or(
const ANY_TYPE& default_value)
const;
773 "Use 'has_value() ? &value() : address' instead")
774 const TYPE *addressOr(const TYPE *address) const;
782 TYPE valueOr(const TYPE& otherValue) const;
789 const TYPE *valueOrNull() const;
799template <class HASHALG, class TYPE>
810template <class LHS_TYPE, class RHS_TYPE>
820template <class LHS_TYPE, class RHS_TYPE>
822 const RHS_TYPE& rhs);
823template <class LHS_TYPE, class RHS_TYPE>
824bool operator==(const LHS_TYPE& lhs,
833template <class LHS_TYPE, class RHS_TYPE>
843template <class LHS_TYPE, class RHS_TYPE>
845 const RHS_TYPE& rhs);
846template <class LHS_TYPE, class RHS_TYPE>
847bool operator!=(const LHS_TYPE& lhs,
856template <class LHS_TYPE, class RHS_TYPE>
863template <class LHS_TYPE, class RHS_TYPE>
865 const RHS_TYPE& rhs);
870template <class LHS_TYPE, class RHS_TYPE>
871bool operator<(const LHS_TYPE& lhs,
879template <class LHS_TYPE, class RHS_TYPE>
887template <class LHS_TYPE, class RHS_TYPE>
889 const RHS_TYPE& rhs);
895template <class LHS_TYPE, class RHS_TYPE>
896bool operator<=(const LHS_TYPE& lhs,
906template <class LHS_TYPE, class RHS_TYPE>
914template <class LHS_TYPE, class RHS_TYPE>
916 const RHS_TYPE& rhs);
922template <class LHS_TYPE, class RHS_TYPE>
923bool operator>(const LHS_TYPE& lhs,
932template <class LHS_TYPE, class RHS_TYPE>
940template <class LHS_TYPE, class RHS_TYPE>
942 const RHS_TYPE& rhs);
948template <class LHS_TYPE, class RHS_TYPE>
949bool operator>=(const LHS_TYPE& lhs,
963bool operator==(const
bsl::nullopt_t&,
974bool operator!=(const
bsl::nullopt_t&,
987bool operator<(const
bsl::nullopt_t&,
1003template <class TYPE>
1008template <class TYPE>
1013template <class TYPE>
1018template <class TYPE>
1019bool operator>=(const
bsl::nullopt_t&,
1032template <class LHS_TYPE, class RHS_TYPE>
1035template <class LHS_TYPE, class RHS_TYPE>
1045template <class LHS_TYPE, class RHS_TYPE>
1048template <class LHS_TYPE, class RHS_TYPE>
1058template <class LHS_TYPE, class RHS_TYPE>
1061template <class LHS_TYPE, class RHS_TYPE>
1070template <class LHS_TYPE, class RHS_TYPE>
1073template <class LHS_TYPE, class RHS_TYPE>
1084template <class LHS_TYPE, class RHS_TYPE>
1087template <class LHS_TYPE, class RHS_TYPE>
1097template <class LHS_TYPE, class RHS_TYPE>
1100template <class LHS_TYPE, class RHS_TYPE>
1111template <class TYPE>
1120template <
class TYPE>
1129template <
class TYPE>
1133 return d_isTargetOptional;
1137template <
class TYPE>
1141, d_isTargetOptional(true)
1145template <
class TYPE>
1150, d_isTargetOptional(false)
1154template <
class TYPE>
1158: d_target_p(original.d_target_p)
1159, d_isTargetOptional(original.d_isTargetOptional)
1164template <
class TYPE>
1169 ? getOpt().has_value()
1173template <
class TYPE>
1177 return !has_value();
1180template <
class TYPE>
1191template <
class TYPE>
1197 ? getOpt().operator->()
1198 : getNAV().operator->();
1201template <
class TYPE>
1207 ? getOpt().operator*()
1208 : getNAV().operator*();
1211#ifdef BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT
1212template <
class TYPE>
1219template <
class TYPE>
1220template <
class ANY_TYPE>
1223 const ANY_TYPE& default_value)
const
1230 return default_value;
1235#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1236template <
class TYPE>
1237template <
class... ARGS>
1248template <
class TYPE>
1254 ? getOpt().operator->()
1255 : getNAV().operator->();
1258template <
class TYPE>
1264 ? getOpt().operator*()
1265 : getNAV().operator*();
1268template <
class TYPE>
1277template <
class TYPE>
1292template <
class TYPE>
1297 if (rhs.has_value()) {
1298 *
this = rhs.value();
1306template <
class TYPE>
1313 *
this = rhs.
value();
1322template <
class TYPE>
1328 *
this = rhs.
value();
1337template <
class TYPE>
1349template <
class TYPE>
1360template <
class TYPE>
1365 return has_value() ? &value() : address;
1368#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1369template <
class TYPE>
1370template <
class... ARGS>
1378template <
class TYPE>
1382 return value_or(otherValue);
1385template <
class TYPE>
1389 return has_value() ? &value() : 0;
1393template <
class HASHALG,
class TYPE>
1395 const NullableValueRef<TYPE>& input)
1397 using ::BloombergLP::bslh::hashAppend;
1399 if (!input.has_value()) {
1409template <
class LHS_TYPE,
class RHS_TYPE>
1412 const NullableValueRef<RHS_TYPE>& rhs)
1414 if (lhs.has_value()) {
1415 return rhs.has_value() ? lhs.value() == rhs.value() :
false;
1418 return !rhs.has_value();
1421template <
class LHS_TYPE,
class RHS_TYPE>
1424 const RHS_TYPE& rhs)
1426 return lhs.has_value() ? lhs.value() == rhs :
false;
1429template <
class LHS_TYPE,
class RHS_TYPE>
1432 const NullableValueRef<RHS_TYPE>& rhs)
1434 return rhs.has_value() ? lhs == rhs.value():
false;
1437template <
class LHS_TYPE,
class RHS_TYPE>
1440 const NullableValueRef<RHS_TYPE>& rhs)
1442 if (lhs.has_value()) {
1443 return rhs.has_value() ? lhs.value() != rhs.value() :
true;
1446 return rhs.has_value();
1449template <
class LHS_TYPE,
class RHS_TYPE>
1452 const RHS_TYPE& rhs)
1454 return lhs.has_value() ? lhs.value() != rhs :
true;
1457template <
class LHS_TYPE,
class RHS_TYPE>
1460 const NullableValueRef<RHS_TYPE>& rhs)
1462 return rhs.has_value() ? lhs != rhs.value() :
true;
1465template <
class LHS_TYPE,
class RHS_TYPE>
1468 const NullableValueRef<RHS_TYPE>& rhs)
1470 if (!rhs.has_value()) {
1474 return lhs.has_value() ? lhs.value() < rhs.value() :
true;
1477template <
class LHS_TYPE,
class RHS_TYPE>
1480 const RHS_TYPE& rhs)
1482 return lhs.has_value() ? lhs.value() < rhs :
true;
1485template <
class LHS_TYPE,
class RHS_TYPE>
1488 const NullableValueRef<RHS_TYPE>& rhs)
1490 return rhs.has_value() ? lhs < rhs.value() :
false;
1493template <
class LHS_TYPE,
class RHS_TYPE>
1496 const NullableValueRef<RHS_TYPE>& rhs)
1498 if (!lhs.has_value()) {
1502 return rhs.has_value() ? lhs.value() <= rhs.value() :
false;
1505template <
class LHS_TYPE,
class RHS_TYPE>
1508 const RHS_TYPE& rhs)
1510 return lhs.has_value() ? lhs.value() <= rhs :
true;
1513template <
class LHS_TYPE,
class RHS_TYPE>
1516 const NullableValueRef<RHS_TYPE>& rhs)
1518 return rhs.has_value() ? lhs <= rhs.value() :
false;
1521template <
class LHS_TYPE,
class RHS_TYPE>
1524 const NullableValueRef<RHS_TYPE>& rhs)
1526 if (!lhs.has_value()) {
1530 return rhs.has_value() ? lhs.value() > rhs.value() :
true;
1533template <
class LHS_TYPE,
class RHS_TYPE>
1536 const RHS_TYPE& rhs)
1538 return lhs.has_value() ? lhs.value() > rhs :
false;
1541template <
class LHS_TYPE,
class RHS_TYPE>
1544 const NullableValueRef<RHS_TYPE>& rhs)
1546 return rhs.has_value() ? lhs > rhs.value() :
true;
1549template <
class LHS_TYPE,
class RHS_TYPE>
1552 const NullableValueRef<RHS_TYPE>& rhs)
1554 if (!rhs.has_value()) {
1558 return lhs.has_value() ? lhs.value() >= rhs.value() :
false;
1561template <
class LHS_TYPE,
class RHS_TYPE>
1564 const RHS_TYPE& rhs)
1566 return lhs.has_value() ? lhs.value() >= rhs :
false;
1569template <
class LHS_TYPE,
class RHS_TYPE>
1572 const NullableValueRef<RHS_TYPE>& rhs)
1574 return rhs.has_value() ? lhs >= rhs.value() :
true;
1581template <
class TYPE>
1586 return !lhs.has_value();
1589template <
class TYPE>
1595 return !rhs.has_value();
1598template <
class TYPE>
1602 return lhs.has_value();
1605template <
class TYPE>
1611 return rhs.has_value();
1614template <
class TYPE>
1622template <
class TYPE>
1628 return rhs.has_value();
1631template <
class TYPE>
1636 return lhs.has_value();
1639template <
class TYPE>
1647template <
class TYPE>
1652 return !lhs.has_value();
1655template <
class TYPE>
1664template <
class TYPE>
1672template <
class TYPE>
1678 return !rhs.has_value();
1686template <
class TYPE>
1692 return *
static_cast<const NullableAllocatedValue<value_type> *
>(
1696template <
class TYPE>
1705template <
class TYPE>
1709 return d_isTargetOptional;
1713template <
class TYPE>
1718, d_isTargetOptional(true)
1722template <
class TYPE>
1727, d_isTargetOptional(false)
1731template <
class TYPE>
1735: d_target_p(ref.d_target_p)
1736, d_isTargetOptional(ref.d_isTargetOptional)
1740template <
class TYPE>
1744: d_target_p(original.d_target_p)
1745, d_isTargetOptional(original.d_isTargetOptional)
1750template <
class TYPE>
1756 ? getOpt().has_value()
1760template <
class TYPE>
1765 return !has_value();
1768template <
class TYPE>
1779template <
class TYPE>
1785 ? getOpt().operator->()
1786 : getNAV().operator->();
1789template <
class TYPE>
1795 ? getOpt().operator*()
1796 : getNAV().operator*();
1799#ifdef BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT
1800template <
class TYPE>
1807template <
class TYPE>
1808template <
class ANY_TYPE>
1811 const ANY_TYPE& default_value)
const
1818 return default_value;
1822template <
class TYPE>
1827 return has_value() ? &value() : address;
1830template <
class TYPE>
1835 return value_or(otherValue);
1838template <
class TYPE>
1842 return has_value() ? &value() : 0;
1846template <
class HASHALG,
class TYPE>
1848 const ConstNullableValueRef<TYPE>& input)
1850 using ::BloombergLP::bslh::hashAppend;
1852 if (!input.has_value()) {
1862template <
class LHS_TYPE,
class RHS_TYPE>
1865 const ConstNullableValueRef<RHS_TYPE>& rhs)
1867 if (lhs.has_value()) {
1868 return rhs.has_value() ? lhs.value() == rhs.value() :
false;
1871 return !rhs.has_value();
1874template <
class LHS_TYPE,
class RHS_TYPE>
1877 const RHS_TYPE& rhs)
1879 return lhs.has_value() ? lhs.value() == rhs :
false;
1882template <
class LHS_TYPE,
class RHS_TYPE>
1885 const ConstNullableValueRef<RHS_TYPE>& rhs)
1887 return rhs.has_value() ? lhs == rhs.value():
false;
1890template <
class LHS_TYPE,
class RHS_TYPE>
1893 const ConstNullableValueRef<RHS_TYPE>& rhs)
1895 if (lhs.has_value()) {
1896 return rhs.has_value() ? lhs.value() != rhs.value() :
true;
1899 return rhs.has_value();
1902template <
class LHS_TYPE,
class RHS_TYPE>
1905 const RHS_TYPE& rhs)
1907 return lhs.has_value() ? lhs.value() != rhs :
true;
1910template <
class LHS_TYPE,
class RHS_TYPE>
1913 const ConstNullableValueRef<RHS_TYPE>& rhs)
1915 return rhs.has_value() ? lhs != rhs.value() :
true;
1918template <
class LHS_TYPE,
class RHS_TYPE>
1921 const ConstNullableValueRef<RHS_TYPE>& rhs)
1923 if (!rhs.has_value()) {
1927 return lhs.has_value() ? lhs.value() < rhs.value() :
true;
1930template <
class LHS_TYPE,
class RHS_TYPE>
1933 const RHS_TYPE& rhs)
1935 return lhs.has_value() ? lhs.value() < rhs :
true;
1938template <
class LHS_TYPE,
class RHS_TYPE>
1941 const ConstNullableValueRef<RHS_TYPE>& rhs)
1943 return rhs.has_value() ? lhs < rhs.value() :
false;
1946template <
class LHS_TYPE,
class RHS_TYPE>
1949 const ConstNullableValueRef<RHS_TYPE>& rhs)
1951 if (!lhs.has_value()) {
1955 return rhs.has_value() ? lhs.value() <= rhs.value() :
false;
1958template <
class LHS_TYPE,
class RHS_TYPE>
1961 const RHS_TYPE& rhs)
1963 return lhs.has_value() ? lhs.value() <= rhs :
true;
1966template <
class LHS_TYPE,
class RHS_TYPE>
1969 const ConstNullableValueRef<RHS_TYPE>& rhs)
1971 return rhs.has_value() ? lhs <= rhs.value() :
false;
1974template <
class LHS_TYPE,
class RHS_TYPE>
1977 const ConstNullableValueRef<RHS_TYPE>& rhs)
1979 if (!lhs.has_value()) {
1983 return rhs.has_value() ? lhs.value() > rhs.value() :
true;
1986template <
class LHS_TYPE,
class RHS_TYPE>
1989 const RHS_TYPE& rhs)
1991 return lhs.has_value() ? lhs.value() > rhs :
false;
1994template <
class LHS_TYPE,
class RHS_TYPE>
1997 const ConstNullableValueRef<RHS_TYPE>& rhs)
1999 return rhs.has_value() ? lhs > rhs.value() :
true;
2002template <
class LHS_TYPE,
class RHS_TYPE>
2005 const ConstNullableValueRef<RHS_TYPE>& rhs)
2007 if (!rhs.has_value()) {
2011 return lhs.has_value() ? lhs.value() >= rhs.value() :
false;
2014template <
class LHS_TYPE,
class RHS_TYPE>
2017 const RHS_TYPE& rhs)
2019 return lhs.has_value() ? lhs.value() >= rhs :
false;
2022template <
class LHS_TYPE,
class RHS_TYPE>
2025 const ConstNullableValueRef<RHS_TYPE>& rhs)
2027 return rhs.has_value() ? lhs >= rhs.value() :
true;
2034template <
class TYPE>
2039 return !lhs.has_value();
2042template <
class TYPE>
2048 return !rhs.has_value();
2051template <
class TYPE>
2055 return lhs.has_value();
2058template <
class TYPE>
2064 return rhs.has_value();
2067template <
class TYPE>
2075template <
class TYPE>
2081 return rhs.has_value();
2084template <
class TYPE>
2089 return lhs.has_value();
2092template <
class TYPE>
2101template <
class TYPE>
2106 return !lhs.has_value();
2109template <
class TYPE>
2118template <
class TYPE>
2126template <
class TYPE>
2132 return !rhs.has_value();
2139template <
class LHS_TYPE,
class RHS_TYPE>
2142 const NullableValueRef<RHS_TYPE>& rhs)
2144 if (lhs.has_value()) {
2145 return rhs.has_value() ? lhs.value() == rhs.value() :
false;
2148 return !rhs.has_value();
2151template <
class LHS_TYPE,
class RHS_TYPE>
2154 const ConstNullableValueRef<RHS_TYPE>& rhs)
2156 if (lhs.has_value()) {
2157 return rhs.has_value() ? lhs.value() == rhs.value() :
false;
2160 return !rhs.has_value();
2163template <
class LHS_TYPE,
class RHS_TYPE>
2166 const NullableValueRef<RHS_TYPE>& rhs)
2168 if (lhs.has_value()) {
2169 return rhs.has_value() ? lhs.value() != rhs.value() :
true;
2172 return rhs.has_value();
2175template <
class LHS_TYPE,
class RHS_TYPE>
2178 const ConstNullableValueRef<RHS_TYPE>& rhs)
2180 if (lhs.has_value()) {
2181 return rhs.has_value() ? lhs.value() != rhs.value() :
true;
2184 return rhs.has_value();
2187template <
class LHS_TYPE,
class RHS_TYPE>
2190 const NullableValueRef<RHS_TYPE>& rhs)
2192 if (!rhs.has_value()) {
2196 return lhs.has_value() ? lhs.value() < rhs.value() :
true;
2199template <
class LHS_TYPE,
class RHS_TYPE>
2202 const ConstNullableValueRef<RHS_TYPE>& rhs)
2204 if (!rhs.has_value()) {
2208 return lhs.has_value() ? lhs.value() < rhs.value() :
true;
2211template <
class LHS_TYPE,
class RHS_TYPE>
2214 const NullableValueRef<RHS_TYPE>& rhs)
2216 if (!lhs.has_value()) {
2220 return rhs.has_value() ? lhs.value() <= rhs.value() :
false;
2223template <
class LHS_TYPE,
class RHS_TYPE>
2226 const ConstNullableValueRef<RHS_TYPE>& rhs)
2228 if (!lhs.has_value()) {
2232 return rhs.has_value() ? lhs.value() <= rhs.value() :
false;
2235template <
class LHS_TYPE,
class RHS_TYPE>
2238 const NullableValueRef<RHS_TYPE>& rhs)
2240 if (!lhs.has_value()) {
2244 return rhs.has_value() ? lhs.value() > rhs.value() :
true;
2247template <
class LHS_TYPE,
class RHS_TYPE>
2250 const ConstNullableValueRef<RHS_TYPE>& rhs)
2252 if (!lhs.has_value()) {
2256 return rhs.has_value() ? lhs.value() > rhs.value() :
true;
2259template <
class LHS_TYPE,
class RHS_TYPE>
2262 const NullableValueRef<RHS_TYPE>& rhs)
2264 if (!rhs.has_value()) {
2268 return lhs.has_value() ? lhs.value() >= rhs.value() :
false;
2271template <
class LHS_TYPE,
class RHS_TYPE>
2274 const ConstNullableValueRef<RHS_TYPE>& rhs)
2276 if (!rhs.has_value()) {
2280 return lhs.has_value() ? lhs.value() >= rhs.value() :
false;
Definition bdlb_nullablevalueref.h:633
BSLS_DEPRECATE_FEATURE("bdl", "ConstNullableValueRef::addressOr", "Use 'has_value() ? &value() : address' instead") const TYPE *addressOr(const TYPE *address) const
TYPE value_type
Definition bdlb_nullablevalueref.h:686
Definition bdlb_nullableallocatedvalue.h:174
void reset()
Definition bdlb_nullableallocatedvalue.h:1104
bool has_value() const BSLS_KEYWORD_NOEXCEPT
Definition bdlb_nullableallocatedvalue.h:1349
TYPE & emplace(BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)...)
TYPE & value()
Definition bdlb_nullableallocatedvalue.h:1139
Definition bdlb_nullablevalueref.h:163
BSLS_DEPRECATE_FEATURE("bdl", "NullableValueRef::valueOr", "Use 'value_or' instead") TYPE valueOr(const TYPE &otherValue) const
TYPE & emplace(BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)...)
TYPE value_type
Definition bdlb_nullablevalueref.h:220
BSLS_DEPRECATE_FEATURE("bdl", "NullableValueRef::makeValueInplace", "Use 'emplace' instead") TYPE &makeValueInplace(ARGS &&... args)
BSLS_DEPRECATE_FEATURE("bdl", "NullableValueRef::addressOr", "Use 'has_value() ? &value() : address' instead") const TYPE *addressOr(const TYPE *address) const
Definition bslstl_optional.h:1861
TYPE value_or(const ANY_TYPE &default_value) const
Definition bdlb_nullablevalueref.h:1222
void reset()
Definition bdlb_nullablevalueref.h:1339
TYPE value_or(const ANY_TYPE &default_value) const
Definition bdlb_nullablevalueref.h:1810
const value_type * operator->() const
Definition bdlb_nullablevalueref.h:1194
const value_type * operator->() const
Definition bdlb_nullablevalueref.h:1782
bool has_value() const BSLS_KEYWORD_NOEXCEPT
Return true if the target contains a value, and false otherwise.
Definition bdlb_nullablevalueref.h:1166
NullableValueRef(bsl::optional< TYPE > &opt)
Definition bdlb_nullablevalueref.h:1139
bool has_value() const BSLS_KEYWORD_NOEXCEPT
Return true if the target contains a value, and false otherwise.
Definition bdlb_nullablevalueref.h:1753
const value_type & operator*() const
Definition bdlb_nullablevalueref.h:1792
const value_type & value() const
Definition bdlb_nullablevalueref.h:1183
bool isNull() const BSLS_KEYWORD_NOEXCEPT
Definition bdlb_nullablevalueref.h:1175
bool isNull() const BSLS_KEYWORD_NOEXCEPT
Definition bdlb_nullablevalueref.h:1763
const value_type & operator*() const
Definition bdlb_nullablevalueref.h:1204
NullableValueRef< TYPE > & operator=(const bsl::nullopt_t &)
Definition bdlb_nullablevalueref.h:1271
ConstNullableValueRef(const bsl::optional< TYPE > &opt)
Definition bdlb_nullablevalueref.h:1715
const value_type & value() const
Definition bdlb_nullablevalueref.h:1771
#define BSLMF_ASSERT(expr)
Definition bslmf_assert.h:229
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1804
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2012
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2018
#define BSLS_DEPRECATE_FEATURE(UOR, FEATURE, MESSAGE)
Definition bsls_deprecatefeature.h:319
#define BSLS_NOTHROW_SPEC
Definition bsls_exceptionutil.h:386
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
#define BSLS_KEYWORD_EXPLICIT
Definition bsls_keyword.h:641
#define BSLS_KEYWORD_NOEXCEPT
Definition bsls_keyword.h:632
Definition bdlb_algorithmworkaroundutil.h:74
bool operator!=(const BigEndianInt16 &lhs, const BigEndianInt16 &rhs)
bool operator>=(const Guid &lhs, const Guid &rhs)
void hashAppend(HASH_ALGORITHM &hashAlgorithm, const BigEndianInt16 &object)
bool operator<=(const Guid &lhs, const Guid &rhs)
bool operator>(const Guid &lhs, const Guid &rhs)
bool operator<(const Guid &lhs, const Guid &rhs)
bool operator==(const BigEndianInt16 &lhs, const BigEndianInt16 &rhs)
Definition bdlb_printmethods.h:283
Definition bslmf_issame.h:146
Definition bslstl_optional.h:467
bsl::remove_cv< typenamebsl::remove_reference< t_TYPE >::type >::type type
Definition bslmf_removecvref.h:136