2
0
mirror of https://github.com/boostorg/fiber.git synced 2026-02-19 14:22:23 +00:00

make future ctor private

- ctor creating future from future_base should be private
This commit is contained in:
Oliver Kowalke
2015-12-27 15:13:58 +01:00
parent ed38759508
commit 4c95c148fc

View File

@@ -93,25 +93,34 @@ struct future_base {
}
};
template< typename R >
struct promise_base;
}
template< typename R >
class shared_future;
template< typename Signature >
class packaged_task;
template< typename R >
class future : private detail::future_base< R > {
private:
typedef detail::future_base< R > base_t;
friend struct detail::promise_base< R >;
friend class shared_future< R >;
public:
constexpr future() noexcept = default;
template< typename Signature >
friend class packaged_task;
explicit future( typename base_t::ptr_t const& p) noexcept :
base_t{ p } {
}
public:
constexpr future() noexcept = default;
future( future const&) = delete;
future & operator=( future const&) = delete;
@@ -148,15 +157,18 @@ class future< R & > : private detail::future_base< R & > {
private:
typedef detail::future_base< R & > base_t;
friend struct detail::promise_base< R & >;
friend class shared_future< R & >;
public:
constexpr future() noexcept = default;
template< typename Signature >
friend class packaged_task;
explicit future( typename base_t::ptr_t const& p) noexcept :
base_t{ p } {
}
public:
constexpr future() noexcept = default;
future( future const&) = delete;
future & operator=( future const&) = delete;
@@ -193,15 +205,18 @@ class future< void > : private detail::future_base< void > {
private:
typedef detail::future_base< void > base_t;
friend struct detail::promise_base< void >;
friend class shared_future< void >;
public:
constexpr future() noexcept = default;
template< typename Signature >
friend class packaged_task;
explicit future( base_t::ptr_t const& p) noexcept :
base_t{ p } {
}
public:
constexpr future() noexcept = default;
future( future const&) = delete;
future & operator=( future const&) = delete;