Es fundamental interpretar el código de forma correcta antes de adaptarlo a tu trabajo y si ttienes algo que aportar puedes decirlo en los comentarios.
Solución:
Hay una versión actualizada de ese archivo que funciona bien para la revisión más reciente del estándar ISO/IEC 14882, a saber, C++17.
https://github.com/BjarneStroustrup/Programming-_Principles_and_Practice_Using_Cpp/blob/master/std_lib_facilities.h
No necesitas esa línea:
#include
¡Espero que no hayas dejado de aprender C++ con ese maravilloso libro!
no deberíamos usar este archivo “std_lib_facilities.h” en absoluto, ya que está usando encabezados obsoletos o anticuados.
Debería #include
encabezados estándar a medida que los usa. los std_lib_facilities.h
podría perder la sincronización.
#include
#include "std_lib_facilities.h"
int main()
std::cout<<"Hello world";
debería ser más bien
#include
// #include "std_lib_facilities.h" Remove this entirely!
int main()
std::cout<<"Hello world";
Usando más características estándar como std::string
debiera ser:
#include
#include
int main()
std::string hello = "Hello world";
std::cout<
Extendiéndose más allá, leyendo el #include std_lib_facilities.h
en sus libros, el ejemplo probablemente debería convertirse en expandir el encabezado estándar realmente necesario para su código compilable y productivo.
Aquí hay solo una plantilla de inicio predeterminada como la usa Coliru
#include
#include
template
std::ostream& operator<<(std::ostream& os, const std::vector& vec)
for (auto& el : vec)
os << el << ' ';
return os;
int main()
std::vector vec =
"Hello", "from", "GCC", __VERSION__, "!"
;
std::cout << vec << std::endl;
Seguro que podrías recoger el
#include
#include
en un archivo de encabezado separado, pero sería tedioso mantener sincronizado lo que necesita en particular con todas sus unidades de traducción.
Otra pregunta y respuesta relacionada:
¿Por qué no debería #incluir?
Recuerda algo, que te concedemos decir si te fue de ayuda.