C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- æ ååºå¤´æä»¶ <ctime>
- æ ååºå¤´æä»¶ <cstring>
- æ ååºå¤´æä»¶ <set>
- æ ååºå¤´æä»¶ <cctype>
- æ ååºå¤´æä»¶ <cwctype>
- æ ååºå¤´æä»¶ <utility>
- æ ååºå¤´æä»¶ <queue>
- æ ååºå¤´æä»¶ <complex>
- æ ååºå¤´æä»¶ <iterator>
- æ ååºå¤´æä»¶ <algorithm>
- æ ååºå¤´æä»¶ <valarray>
- æ ååºå¤´æä»¶ <numeric>
- æ ååºå¤´æä»¶ <cmath>
- æ ååºå¤´æä»¶ <iosfwd>
- æ ååºå¤´æä»¶ <ios>
- æ ååºå¤´æä»¶ <iomanip>
- æ ååºå¤´æä»¶ <streambuf>
- æ ååºå¤´æä»¶ <istream>
- æ ååºå¤´æä»¶ <ostream>
- æ ååºå¤´æä»¶ <iostream>
- æ ååºå¤´æä»¶ <sstream>
- æ ååºå¤´æä»¶ <clocale>
- æ ååºå¤´æä»¶ <vector>
- æ ååºå¤´æä»¶ <deque>
- æ ååºå¤´æä»¶ <list>
- æ ååºå¤´æä»¶ <map>
- æ ååºå¤´æä»¶ <cwchar>
- æ ååºå¤´æä»¶ <locale>
- æ ååºå¤´æä»¶ <codecvt>
- æ ååºå¤´æä»¶ <bitset>
- æ ååºå¤´æä»¶ <functional>
- æ ååºå¤´æä»¶ <stdexcept>
- æ ååºå¤´æä»¶ <csignal>
- æ ååºå¤´æä»¶ <csetjmp>
- æ ååºå¤´æä»¶ <stack>
- æ ååºå¤´æä»¶ <cassert>
- æ ååºå¤´æä»¶ <cerrno>
- æ ååºå¤´æä»¶ <memory>
- æ ååºå¤´æä»¶ <typeindex>
- æ ååºå¤´æä»¶ <type_traits>
- æ ååºå¤´æä»¶ <chrono>
- æ ååºå¤´æä»¶ <initializer_list>
- æ ååºå¤´æä»¶ <tuple>
- æ ååºå¤´æä»¶ <scoped_allocator>
- æ ååºå¤´æä»¶ <cstdint>
- æ ååºå¤´æä»¶ <cinttypes>
- æ ååºå¤´æä»¶ <system_error>
- æ ååºå¤´æä»¶ <cuchar>
- æ ååºå¤´æä»¶ <array>
- æ ååºå¤´æä»¶ <forward_list>
- æ ååºå¤´æä»¶ <unordered_set>
- æ ååºå¤´æä»¶ <unordered_map>
- æ ååºå¤´æä»¶ <random>
- æ ååºå¤´æä»¶ <ratio>
- æ ååºå¤´æä»¶ <cfenv>
- æ ååºå¤´æä»¶ <regex>
- æ ååºå¤´æä»¶ <atomic>
- æ ååºå¤´æä»¶ <thread>
- æ ååºå¤´æä»¶ <mutex>
- æ ååºå¤´æä»¶ <future>
- æ ååºå¤´æä»¶ <condition_variable>
- æ ååºå¤´æä»¶ <any>
- æ ååºå¤´æä»¶ <optional>
- æ ååºå¤´æä»¶ <variant>
- æ ååºå¤´æä»¶ <memory_resource>
- æ ååºå¤´æä»¶ <string_view>
- æ ååºå¤´æä»¶ <charconv>
- æ ååºå¤´æä»¶ <execution>
- æ ååºå¤´æä»¶ <filesystem>
- æ ååºå¤´æä»¶ <concepts>
- æ ååºå¤´æä»¶ <coroutine>
- æ ååºå¤´æä»¶ <compare>
- æ ååºå¤´æä»¶ <version>
- æ ååºå¤´æä»¶ <source_location>
- æ ååºå¤´æä»¶ <format>
- æ ååºå¤´æä»¶ <span>
- æ ååºå¤´æä»¶ <ranges>
- æ ååºå¤´æä»¶ <bit>
- æ ååºå¤´æä»¶ <numbers>
- æ ååºå¤´æä»¶ <syncstream>
- æ ååºå¤´æä»¶ <stop_token>
- æ ååºå¤´æä»¶ <semaphore>
- æ ååºå¤´æä»¶ <latch>
- æ ååºå¤´æä»¶ <barrier>
- æ ååºå¤´æä»¶ <string>
- æ ååºå¤´æä»¶ <cstddef>
- æ ååºå¤´æä»¶ <limits>
- æ ååºå¤´æä»¶ <cfloat>
- æ ååºå¤´æä»¶ <climits>
- æ ååºå¤´æä»¶ <cstdlib>
- æ ååºå¤´æä»¶ <new>
- æ ååºå¤´æä»¶ <typeinfo>
- æ ååºå¤´æä»¶ <exception>
- æ ååºå¤´æä»¶ <cstdarg>
- æ ååºå¤´æä»¶ <ciso646>
- æ ååºå¤´æä»¶ <cstdalign>
- æ ååºå¤´æä»¶ <cstdbool>
- æ ååºå¤´æä»¶ <fstream>
- æ ååºå¤´æä»¶ <cstdio>
- æ ååºå¤´æä»¶ <strstream>
- æ ååºå¤´æä»¶ <shared_mutex>
- æ ååºå¤´æä»¶ <ccomplex>
- æ ååºå¤´æä»¶ <ctgmath>
- 注é
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >C++ æ ååºå¤´æä»¶ > æ ååºå¤´æä»¶ <future>
æ ååºå¤´æä»¶ <future>
æ¤å¤´æä»¶æ¯çº¿ç¨æ¯æåºçä¸é¨åã
ç±» | |
| (C++11) |
åå¨ä¸ä¸ªå¼ä»¥è¿è¡å¼æ¥è·å (类模æ¿) |
| (C++11) |
æå
ä¸ä¸ªå½æ°ï¼åå¨å
¶è¿åå¼ä»¥è¿è¡å¼æ¥è·å (类模æ¿) |
| (C++11) |
çå¾
è¢«å¼æ¥è®¾ç½®çå¼ (类模æ¿) |
| (C++11) |
çå¾
è¢«å¼æ¥è®¾ç½®çå¼ï¼å¯è½ä¸ºå
¶ä» future æå¼ç¨ï¼ (类模æ¿) |
| (C++11) |
æå® std::async æç¨çè¿è¡çç¥ (æä¸¾) |
| (C++11) |
æå®å¨ std::future å std::shared_future ä¸ç宿¶çå¾
çç»æ (æä¸¾) |
| (C++11) |
æ¥åä¸ future æ promise æå
³çé误 (ç±») |
| (C++11) |
é´å« future é误ç (æä¸¾) |
| ç¹å std::uses_allocator ç±»åç¹å¾ (类模æ¿ç¹å) | |
| (C++11)(C++17 å) |
ç¹å std::uses_allocator ç±»åç¹å¾ (类模æ¿ç¹å) |
彿° | |
| (C++11) |
弿¥è¿è¡ä¸ä¸ªå½æ°ï¼æå¯è½å¨æ°çº¿ç¨ä¸æ§è¡ï¼ï¼å¹¶è¿åä¿æå
¶ç»æç std::future (彿°æ¨¡æ¿) |
| (C++11) |
é´å« future éè¯¯ç±»å« (彿°) |
| (C++11) |
ç¹å std::swap ç®æ³ (彿°æ¨¡æ¿) |
| ç¹å std::swap ç®æ³ (彿°æ¨¡æ¿) | |
æ¦è¦
namespace std { enum class future_errc { broken_promise = /* ç±å®ç°å®ä¹ */, future_already_retrieved = /* ç±å®ç°å®ä¹ */, promise_already_satisfied = /* ç±å®ç°å®ä¹ */, no_state = /* ç±å®ç°å®ä¹ */ };  enum class launch : /* æªææ */ { async = /* æªææ */, deferred = /* æªææ */, /* ç±å®ç°å®ä¹ */ };  enum class future_status { ready, timeout, deferred };  template <> struct is_error_code_enum<future_errc> : public true_type { };  error_code make_error_code(future_errc e) noexcept; error_condition make_error_condition(future_errc e) noexcept; const error_category& future_category() noexcept;  class future_error;  template <class R> class promise; template <class R> class promise<R&>; template <> class promise<void>;  template <class R> void swap(promise<R>& x, promise<R>& y) noexcept;  template <class R, class Alloc> struct uses_allocator<promise<R>, Alloc> : true_type {};  template <class R> class future; template <class R> class future<R&>; template <> class future<void>;  template <class R> class shared_future; template <class R> class shared_future<R&>; template <> class shared_future<void>;  template <class> class packaged_task; // ä¸äºå®ä¹ template <class R, class... ArgTypes> class packaged_task<R(ArgTypes...)>;  template <class R> void swap(packaged_task<R(ArgTypes...)>&, packaged_task<R(ArgTypes...)>&) noexcept;  template <class R, class Alloc> struct uses_allocator<packaged_task<R>, Alloc> : true_type {};  template <class F, class... Args> future<result_of_t<decay_t<F>(decay_t<Args>...)>> async(F&& f, Args&&... args);  template <class F, class... Args> future<result_of_t<decay_t<F>(decay_t<Args>...)>> async(launch policy, F&& f, Args&&... args); }
ç±» std::future_error
class future_error : public logic_error { public: explicit future_error(error_code ec); // C++17 åä» ç¨äºéé const error_code& code() const noexcept; const char* what() const noexcept; };
ç±» std::promise
template <class R> class promise { public: promise(); template <class Allocator> promise(allocator_arg_t, const Allocator& a); promise(promise&& rhs) noexcept; promise(const promise& rhs) = delete; ~promise();  // èµå¼ promise& operator=(promise&& rhs) noexcept; promise& operator=(const promise& rhs) = delete; void swap(promise& other) noexcept;  // åå¾ç»æ future<R> get_future();  // è®¾ç½®ç»æ void set_value(/* è§è¯´æ */); void set_exception(exception_ptr p);  // 以延è¿éç¥è®¾ç½®ç»æ void set_value_at_thread_exit(/* è§è¯´æ */); void set_exception_at_thread_exit(exception_ptr p); };
ç±» std::future
template <class R> class future { public: future() noexcept; future(future &&) noexcept; future(const future& rhs) = delete; ~future(); future& operator=(const future& rhs) = delete; future& operator=(future&&) noexcept; shared_future<R> share();  // åå¾å¼ /* è§è¯´æ */ get();  // ç¨ä»¥æ£æ¥ç¶æç彿° bool valid() const noexcept; void wait() const; template <class Rep, class Period> future_status wait_for(const chrono::duration<Rep, Period>& rel_time) const; template <class Clock, class Duration> future_status wait_until(const chrono::time_point<Clock, Duration>& abs_time) const; };
template <class R> class shared_future { public: shared_future() noexcept; shared_future(const shared_future& rhs); shared_future(future<R>&&) noexcept; shared_future(shared_future&& rhs) noexcept; ~shared_future(); shared_future& operator=(const shared_future& rhs); shared_future& operator=(shared_future&& rhs) noexcept;  // åå¾å¼ /* è§è¯´æ */ get() const;  // ç¨ä»¥æ£æ¥ç¶æç彿° bool valid() const noexcept; void wait() const; template <class Rep, class Period> future_status wait_for(const chrono::duration<Rep, Period>& rel_time) const; template <class Clock, class Duration> future_status wait_until(const chrono::time_point<Clock, Duration>& abs_time) const; };
ç±» std::packaged_task
template<class> class packaged_task; // ä¸äºå®ä¹  template<class R, class... ArgTypes> class packaged_task<R(ArgTypes...)> { public: // æé 䏿æ packaged_task() noexcept; template <class F> explicit packaged_task(F&& f); template <class F, class Allocator> explicit packaged_task(allocator_arg_t, const Allocator& a, F&& f); // C++17 å ~packaged_task();  // æ å¤å¶ packaged_task(const packaged_task&) = delete; packaged_task& operator=(const packaged_task&) = delete;  // ç§»å¨æ¯æ packaged_task(packaged_task&& rhs) noexcept; packaged_task& operator=(packaged_task&& rhs) noexcept;  void swap(packaged_task& other) noexcept; bool valid() const noexcept;  // ç»æåå¾ future<R> get_future();  // æ§è¡ void operator()(ArgTypes... ); void make_ready_at_thread_exit(ArgTypes...);  void reset(); };