Supplement to this video. Watch first 35 min (the language bits), then 1:14:30 - 1:18:15 (the new map features).
You can find a fairly comprehensive list of new features on cppreference or here if you really want to see it all.
#include <utility> | |
#include <exception> | |
// This is probably customizable | |
using Error = std::exception_ptr; | |
template <typename R, typename T> | |
concept ValueReciever = requires (T a, R r) { | |
std::move(r).value(std::move(a)); | |
}; |
Supplement to this video. Watch first 35 min (the language bits), then 1:14:30 - 1:18:15 (the new map features).
You can find a fairly comprehensive list of new features on cppreference or here if you really want to see it all.
#include <cstdlib> | |
#include <boost/optional.hpp> | |
#include <string> | |
using boost::optional; | |
template <typename T> | |
struct Future{}; | |
template <typename T> |
template <typename T> | |
struct ValueReceiver { | |
virtual void value(T) = 0; | |
}; | |
template <typename T> | |
struct ValueOrErrorReceiver : ValueReceiver<T> { | |
virtual void value(T) = 0; | |
virtual void error(std::exception_ptr) = 0; | |
}; |
#include <functional> | |
#include <exception> | |
#include <optional> | |
#include <memory> | |
#include <cassert> | |
#include <atomic> | |
#include <iostream> | |
#include <mutex> | |
#include <condition_variable> | |
#include <thread> |
By: Mathias Stearn
Please provide feedback either by email, or on #sg15-tooling in cpplang.slack.com.
This is an alternative to a proposal that I'm sure was offered with good intentions, but that I and several others shuddered at the sight of:
#include <tuple> | |
#include <optional> | |
#include <functional> | |
///////////////////// | |
/// PRIMARY TEMPLATES | |
template <typename T> | |
struct future_then_return_traits { | |
// Future::then(cb) for a callback that returns T, |
enum State {INIT, PHASE2, DONE}; | |
std::atomic<State> state{INIT}; | |
int non_atomic = 0; // placeholder for actual data. | |
auto phase1 = std::thread([&] { | |
non_atomic = 1; | |
state.store(PHASE2, std::memory_order_release); | |
auto phase2 = std::thread([&] { |
Document Number: | P0911R0 |
---|---|
Date: | 2018-02-03 |
Project: | Programming Language C++, CWG, LWG |
Revises: | none |
Reply to: | [email protected] |