Espacios de nombres
Variantes
Acciones

Archivo de encabezado de la biblioteca estándar <stacktrace>

De cppreference.com
< cpp‎ | header
 
 
Archivos de encabezado de la biblioteca estándar
 

Este archivo de encabezado es parte de la biblioteca de utilerías generales.

Contenido

Clases

Representación de una evaluación en un listado de pila
(clase) [editar]
Una representación aproximada de una secuencia de invocación que consiste de entradas de listado de pila.
(plantilla de clase) [editar]
Soporte de hash (resumen) para std::stacktrace_entry
(especialización de plantilla de clase) [editar]
Soporte para hash (resumen) para el listado de pila, std::basic_stacktrace
(especialización de plantilla de clase) [editar]
Declaraciones adelantadas
Definido en el archivo de encabezado <functional>
(C++11)
Objeto función de dispersión (hash).
(plantilla de clase) [editar]

Funciones

Especializa el algoritmo std::swap
(plantilla de función) [editar]
(C++23)
Devuelve una cadena con una descripción del objeto stacktrace_entry
(función) [editar]
(C++23)
Devuelve una cadena con una descripción del listado de pila, basic_stacktrace
(plantilla de función) [editar]
Ejecuta salida de flujo del objeto stacktrace_entry
(plantilla de función) [editar]
Ejecuta salida de flujo del listado de pila, basic_stracktrace
(plantilla de función) [editar]

[editar] Sinopsis

namespace std {
  // clase stacktrace_entry
  class stacktrace_entry;
 
  // plantilla de clase basic_stacktrace
  template<class Allocator>
    class basic_stacktrace;
 
  // nombres de definiciones de tipo de basic_stacktrace
  using stacktrace = basic_stacktrace<allocator<stacktrace_entry>>;
 
  // funciones no miembro
  template<class Allocator>
    void swap(basic_stacktrace<Allocator>& a, basic_stacktrace<Allocator>& b)
      noexcept(noexcept(a.swap(b)));
 
  string to_string(const stacktrace_entry& f);
 
  template<class Allocator>
    string to_string(const basic_stacktrace<Allocator>& st);
 
  template<class CharT, class traits>
    basic_ostream<CharT, traits>&
      operator<<(basic_ostream<CharT, traits>& os, const stacktrace_entry& f);
 
  template<class CharT, class Traits, class Allocator>
    basic_ostream<CharT, traits>&
      operator<<(basic_ostream<CharT, Traits>& os, const basic_stacktrace<Allocator>& st);
 
  // soporte para hash (resumen)
  template<class T> struct hash;
  template<> struct hash<stacktrace_entry>;
  template<class Allocator> struct hash<basic_stacktrace<Allocator>>;
}

[editar] Clase std::stacktrace_entry

namespace std {
  class stacktrace_entry {
  public:
    using native_handle_type = /* definido por la implementación */;
 
    // constructores
    constexpr stacktrace_entry() noexcept;
    constexpr stacktrace_entry(const stacktrace_entry& other) noexcept;
    constexpr stacktrace_entry& operator=(const stacktrace_entry& other) noexcept;
 
    ~stacktrace_entry();
 
    // observadores
    constexpr native_handle_type native_handle() const noexcept;
    constexpr explicit operator bool() const noexcept;
 
    // consulta
    string description() const;
    string source_file() const;
    uint_least32_t source_line() const;
 
    // comparación
    friend constexpr bool operator==(const stacktrace_entry& x,
                                     const stacktrace_entry& y) noexcept;
    friend constexpr strong_ordering operator<=>(const stacktrace_entry& x,
                                                 const stacktrace_entry& y) noexcept;
  };
}

[editar] Plantilla de clase std::basic_stacktrace

namespace std {
  template<class Allocator>
  class basic_stacktrace {
  public:
    using value_type = stacktrace_entry;
    using const_reference = const value_type&;
    using reference = value_type&;
    using const_iterator = /* definido por la implementación */;
    using iterator = const_iterator;
    using reverse_iterator = std::reverse_iterator<iterator>;
    using const_reverse_iterator = std::reverse_iterator<const_iterator>;
    using difference_type = /* definido por la implementación */;
    using size_type = /* definido por la implementación */;
    using allocator_type = Allocator;
 
    // creación y asignación
    static basic_stacktrace
      current(const allocator_type& alloc = allocator_type()) noexcept;
    static basic_stacktrace
      current(size_type skip, const allocator_type& alloc = allocator_type()) noexcept;
    static basic_stacktrace
      current(size_type skip, size_type max_depth,
              const allocator_type& alloc = allocator_type()) noexcept;
 
    basic_stacktrace() noexcept(is_nothrow_default_constructible_v<allocator_type>);
    explicit basic_stacktrace(const allocator_type& alloc) noexcept;
 
    basic_stacktrace(const basic_stacktrace& other);
    basic_stacktrace(basic_stacktrace&& other) noexcept;
    basic_stacktrace(const basic_stacktrace& other, const allocator_type& alloc);
    basic_stacktrace(basic_stacktrace&& other, const allocator_type& alloc);
    basic_stacktrace& operator=(const basic_stacktrace& other);
    basic_stacktrace& operator=(basic_stacktrace&& other) noexcept(
        allocator_traits<Allocator>::propagate_on_container_move_assignment::value ||
        allocator_traits<Allocator>::is_always_equal::value);
 
    ~basic_stacktrace();
 
    // observadores
    allocator_type get_allocator() const noexcept;
 
    const_iterator begin() const noexcept;
    const_iterator end() const noexcept;
    const_reverse_iterator rbegin() const noexcept;
    const_reverse_iterator rend() const noexcept;
 
    const_iterator cbegin() const noexcept;
    const_iterator cend() const noexcept;
    const_reverse_iterator crbegin() const noexcept;
    const_reverse_iterator crend() const noexcept;
 
    [[nodiscard]] bool empty() const noexcept;
    size_type size() const noexcept;
    size_type max_size() const noexcept;
 
    const_reference operator[](size_type) const;
    const_reference at(size_type) const;
 
    // comparaciones
    template<class Allocator2>
    friend bool operator==(const basic_stacktrace& x,
                           const basic_stacktrace<Allocator2>& y) noexcept;
    template<class Allocator2>
    friend strong_ordering operator<=>(const basic_stacktrace& x,
                                       const basic_stacktrace<Allocator2>& y) noexcept;
 
    // modificadores
    void swap(basic_stacktrace& other)
      noexcept(allocator_traits<Allocator>::propagate_on_container_swap::value ||
        allocator_traits<Allocator>::is_always_equal::value);
 
  private:
    vector<value_type, allocator_type> frames_;         // solo exposición
  };
}