Namespaces
Variants

Standard library header <stacktrace> (C++23)

From cppreference.net
Standard library headers

Cet en-tête fait partie de la bibliothèque de diagnostic .

Table des matières

Classes

représentation d'une évaluation dans une trace de pile
(classe)
représentation approximative d'une séquence d'invocation composée d'entrées de trace de pile
(modèle de classe)
support de hachage pour std::stacktrace_entry
(spécialisation de modèle de classe)
support de hachage pour std::basic_stacktrace
(spécialisation de modèle de classe)
Déclarations anticipées
Défini dans l'en-tête <functional>
(C++11)
objet fonction de hachage
(modèle de classe)
Alias de type
Alias Type
std::stacktrace std:: basic_stacktrace < std:: allocator < std:: stacktrace_entry >>
std::pmr::stacktrace std :: pmr :: basic_stacktrace <
std:: pmr :: polymorphic_allocator < std:: stacktrace_entry >>

Fonctions

spécialise l'algorithme std::swap
(modèle de fonction)
(C++23)
retourne une chaîne avec une description de stacktrace_entry
(fonction)
(C++23)
retourne une chaîne avec une description de basic_stacktrace
(modèle de fonction)
(C++23)
effectue la sortie en flux de stacktrace_entry
(modèle de fonction)
(C++23)
effectue la sortie en flux de basic_stracktrace
(modèle de fonction)

Synopsis

namespace std {
  // classe stacktrace_entry
  class stacktrace_entry;
  // classe template basic_stacktrace
  template<class Allocator>
    class basic_stacktrace;
  // noms typedef de basic_stacktrace
  using stacktrace = basic_stacktrace<allocator<stacktrace_entry>>;
  // fonctions non-membres
  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);
  ostream& operator<<(ostream& os, const stacktrace_entry& f);
  template<class Allocator>
    ostream& operator<<(ostream& os, const basic_stacktrace<Allocator>& st);
  namespace pmr {
    using stacktrace = std::basic_stacktrace<polymorphic_allocator<stacktrace_entry>>;
  }
  // support de hachage
  template<class T> struct hash;
  template<> struct hash<stacktrace_entry>;
  template<class Allocator> struct hash<basic_stacktrace<Allocator>>;
}

Classe std::stacktrace_entry

namespace std {
  class stacktrace_entry {
  public:
    using native_handle_type = /* implementation-defined */;
    // constructeurs
    constexpr stacktrace_entry() noexcept;
    constexpr stacktrace_entry(const stacktrace_entry& other) noexcept;
    constexpr stacktrace_entry& operator=(const stacktrace_entry& other) noexcept;
    ~stacktrace_entry();
    // observateurs
    constexpr native_handle_type native_handle() const noexcept;
    constexpr explicit operator bool() const noexcept;
    // interrogation
    string description() const;
    string source_file() const;
    uint_least32_t source_line() const;
    // comparaison
    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;
  };
}

Modèle de classe 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 = /* implementation-defined */;
    using iterator = const_iterator;
    using reverse_iterator = std::reverse_iterator<iterator>;
    using const_reverse_iterator = std::reverse_iterator<const_iterator>;
    using difference_type = /* implementation-defined */;
    using size_type = /* implementation-defined */;
    using allocator_type = Allocator;
    // création et assignation
    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();
    // observateurs
    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;
    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;
    // comparaisons
    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;
    // modificateurs
    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_;         // exposition uniquement
  };
}