@@ -191,6 +191,7 @@ typedef basic_fstream<wchar_t> wfstream;
191
191
#include < __cxx03/__config>
192
192
#include < __cxx03/__fwd/fstream.h>
193
193
#include < __cxx03/__locale>
194
+ #include < __cxx03/__memory/addressof.h>
194
195
#include < __cxx03/__type_traits/enable_if.h>
195
196
#include < __cxx03/__type_traits/is_same.h>
196
197
#include < __cxx03/__utility/move.h>
@@ -1062,35 +1063,37 @@ private:
1062
1063
};
1063
1064
1064
1065
template <class _CharT , class _Traits >
1065
- inline basic_ifstream<_CharT, _Traits>::basic_ifstream () : basic_istream<char_type, traits_type>(&__sb_) {}
1066
+ inline basic_ifstream<_CharT, _Traits>::basic_ifstream ()
1067
+ : basic_istream<char_type, traits_type>(std::addressof (__sb_)) {}
1066
1068
1067
1069
template <class _CharT , class _Traits >
1068
1070
inline basic_ifstream<_CharT, _Traits>::basic_ifstream (const char * __s, ios_base::openmode __mode)
1069
- : basic_istream<char_type, traits_type>(& __sb_) {
1071
+ : basic_istream<char_type, traits_type>(std::addressof ( __sb_) ) {
1070
1072
if (__sb_.open (__s, __mode | ios_base::in) == nullptr )
1071
1073
this ->setstate (ios_base::failbit);
1072
1074
}
1073
1075
1074
1076
# ifdef _LIBCPP_HAS_OPEN_WITH_WCHAR
1075
1077
template <class _CharT , class _Traits >
1076
1078
inline basic_ifstream<_CharT, _Traits>::basic_ifstream (const wchar_t * __s, ios_base::openmode __mode)
1077
- : basic_istream<char_type, traits_type>(& __sb_) {
1079
+ : basic_istream<char_type, traits_type>(std::addressof ( __sb_) ) {
1078
1080
if (__sb_.open (__s, __mode | ios_base::in) == nullptr )
1079
1081
this ->setstate (ios_base::failbit);
1080
1082
}
1081
1083
# endif
1082
1084
1085
+ // extension
1083
1086
template <class _CharT , class _Traits >
1084
1087
inline basic_ifstream<_CharT, _Traits>::basic_ifstream (const string& __s, ios_base::openmode __mode)
1085
- : basic_istream<char_type, traits_type>(& __sb_) {
1088
+ : basic_istream<char_type, traits_type>(std::addressof ( __sb_) ) {
1086
1089
if (__sb_.open (__s, __mode | ios_base::in) == nullptr )
1087
1090
this ->setstate (ios_base::failbit);
1088
1091
}
1089
1092
1090
1093
template <class _CharT , class _Traits >
1091
1094
inline basic_ifstream<_CharT, _Traits>::basic_ifstream (basic_ifstream&& __rhs)
1092
1095
: basic_istream<char_type, traits_type>(std::move (__rhs)), __sb_ (std::move (__rhs.__sb_ )) {
1093
- this ->set_rdbuf (& __sb_);
1096
+ this ->set_rdbuf (std::addressof ( __sb_) );
1094
1097
}
1095
1098
1096
1099
template <class _CharT , class _Traits >
@@ -1113,7 +1116,7 @@ inline _LIBCPP_HIDE_FROM_ABI void swap(basic_ifstream<_CharT, _Traits>& __x, bas
1113
1116
1114
1117
template <class _CharT , class _Traits >
1115
1118
inline basic_filebuf<_CharT, _Traits>* basic_ifstream<_CharT, _Traits>::rdbuf () const {
1116
- return const_cast <basic_filebuf<char_type, traits_type>*>(& __sb_);
1119
+ return const_cast <basic_filebuf<char_type, traits_type>*>(std::addressof ( __sb_) );
1117
1120
}
1118
1121
1119
1122
template <class _CharT , class _Traits >
@@ -1199,35 +1202,37 @@ private:
1199
1202
};
1200
1203
1201
1204
template <class _CharT , class _Traits >
1202
- inline basic_ofstream<_CharT, _Traits>::basic_ofstream () : basic_ostream<char_type, traits_type>(&__sb_) {}
1205
+ inline basic_ofstream<_CharT, _Traits>::basic_ofstream ()
1206
+ : basic_ostream<char_type, traits_type>(std::addressof (__sb_)) {}
1203
1207
1204
1208
template <class _CharT , class _Traits >
1205
1209
inline basic_ofstream<_CharT, _Traits>::basic_ofstream (const char * __s, ios_base::openmode __mode)
1206
- : basic_ostream<char_type, traits_type>(& __sb_) {
1210
+ : basic_ostream<char_type, traits_type>(std::addressof ( __sb_) ) {
1207
1211
if (__sb_.open (__s, __mode | ios_base::out) == nullptr )
1208
1212
this ->setstate (ios_base::failbit);
1209
1213
}
1210
1214
1211
1215
# ifdef _LIBCPP_HAS_OPEN_WITH_WCHAR
1212
1216
template <class _CharT , class _Traits >
1213
1217
inline basic_ofstream<_CharT, _Traits>::basic_ofstream (const wchar_t * __s, ios_base::openmode __mode)
1214
- : basic_ostream<char_type, traits_type>(& __sb_) {
1218
+ : basic_ostream<char_type, traits_type>(std::addressof ( __sb_) ) {
1215
1219
if (__sb_.open (__s, __mode | ios_base::out) == nullptr )
1216
1220
this ->setstate (ios_base::failbit);
1217
1221
}
1218
1222
# endif
1219
1223
1224
+ // extension
1220
1225
template <class _CharT , class _Traits >
1221
1226
inline basic_ofstream<_CharT, _Traits>::basic_ofstream (const string& __s, ios_base::openmode __mode)
1222
- : basic_ostream<char_type, traits_type>(& __sb_) {
1227
+ : basic_ostream<char_type, traits_type>(std::addressof ( __sb_) ) {
1223
1228
if (__sb_.open (__s, __mode | ios_base::out) == nullptr )
1224
1229
this ->setstate (ios_base::failbit);
1225
1230
}
1226
1231
1227
1232
template <class _CharT , class _Traits >
1228
1233
inline basic_ofstream<_CharT, _Traits>::basic_ofstream (basic_ofstream&& __rhs)
1229
1234
: basic_ostream<char_type, traits_type>(std::move (__rhs)), __sb_ (std::move (__rhs.__sb_ )) {
1230
- this ->set_rdbuf (& __sb_);
1235
+ this ->set_rdbuf (std::addressof ( __sb_) );
1231
1236
}
1232
1237
1233
1238
template <class _CharT , class _Traits >
@@ -1250,7 +1255,7 @@ inline _LIBCPP_HIDE_FROM_ABI void swap(basic_ofstream<_CharT, _Traits>& __x, bas
1250
1255
1251
1256
template <class _CharT , class _Traits >
1252
1257
inline basic_filebuf<_CharT, _Traits>* basic_ofstream<_CharT, _Traits>::rdbuf () const {
1253
- return const_cast <basic_filebuf<char_type, traits_type>*>(& __sb_);
1258
+ return const_cast <basic_filebuf<char_type, traits_type>*>(std::addressof ( __sb_) );
1254
1259
}
1255
1260
1256
1261
template <class _CharT , class _Traits >
@@ -1340,35 +1345,37 @@ private:
1340
1345
};
1341
1346
1342
1347
template <class _CharT , class _Traits >
1343
- inline basic_fstream<_CharT, _Traits>::basic_fstream () : basic_iostream<char_type, traits_type>(&__sb_) {}
1348
+ inline basic_fstream<_CharT, _Traits>::basic_fstream ()
1349
+ : basic_iostream<char_type, traits_type>(std::addressof (__sb_)) {}
1344
1350
1345
1351
template <class _CharT , class _Traits >
1346
1352
inline basic_fstream<_CharT, _Traits>::basic_fstream (const char * __s, ios_base::openmode __mode)
1347
- : basic_iostream<char_type, traits_type>(& __sb_) {
1353
+ : basic_iostream<char_type, traits_type>(std::addressof ( __sb_) ) {
1348
1354
if (__sb_.open (__s, __mode) == nullptr )
1349
1355
this ->setstate (ios_base::failbit);
1350
1356
}
1351
1357
1352
1358
# ifdef _LIBCPP_HAS_OPEN_WITH_WCHAR
1353
1359
template <class _CharT , class _Traits >
1354
1360
inline basic_fstream<_CharT, _Traits>::basic_fstream (const wchar_t * __s, ios_base::openmode __mode)
1355
- : basic_iostream<char_type, traits_type>(& __sb_) {
1361
+ : basic_iostream<char_type, traits_type>(std::addressof ( __sb_) ) {
1356
1362
if (__sb_.open (__s, __mode) == nullptr )
1357
1363
this ->setstate (ios_base::failbit);
1358
1364
}
1359
1365
# endif
1360
1366
1361
1367
template <class _CharT , class _Traits >
1362
1368
inline basic_fstream<_CharT, _Traits>::basic_fstream (const string& __s, ios_base::openmode __mode)
1363
- : basic_iostream<char_type, traits_type>(& __sb_) {
1369
+ : basic_iostream<char_type, traits_type>(std::addressof ( __sb_) ) {
1364
1370
if (__sb_.open (__s, __mode) == nullptr )
1365
1371
this ->setstate (ios_base::failbit);
1366
1372
}
1367
1373
1374
+ // extension
1368
1375
template <class _CharT , class _Traits >
1369
1376
inline basic_fstream<_CharT, _Traits>::basic_fstream (basic_fstream&& __rhs)
1370
1377
: basic_iostream<char_type, traits_type>(std::move (__rhs)), __sb_ (std::move (__rhs.__sb_ )) {
1371
- this ->set_rdbuf (& __sb_);
1378
+ this ->set_rdbuf (std::addressof ( __sb_) );
1372
1379
}
1373
1380
1374
1381
template <class _CharT , class _Traits >
@@ -1391,7 +1398,7 @@ inline _LIBCPP_HIDE_FROM_ABI void swap(basic_fstream<_CharT, _Traits>& __x, basi
1391
1398
1392
1399
template <class _CharT , class _Traits >
1393
1400
inline basic_filebuf<_CharT, _Traits>* basic_fstream<_CharT, _Traits>::rdbuf () const {
1394
- return const_cast <basic_filebuf<char_type, traits_type>*>(& __sb_);
1401
+ return const_cast <basic_filebuf<char_type, traits_type>*>(std::addressof ( __sb_) );
1395
1402
}
1396
1403
1397
1404
template <class _CharT , class _Traits >
0 commit comments