constexpr explicit barrier( std::ptrdiff_t expected,
                            CompletionFunction f = CompletionFunction());
(1) (since C++20)
barrier( const barrier & ) = delete;
(2) (since C++20)
1) Sets the both initial expected count for each phase and the current expected count for the first phase to expected, initializes the completion function object with std::move(f), and then starts the first phase. The behavior is undefined if expected is negative or greater than max().
2) Copy constructor is deleted. barrier is neither copyable nor movable.


expected - initial value of the expected count
f - completion function object to be called on phase completion step


1) Any exception thrown by CompletionFunction's move constructor.


expected is permitted to be zero. However, calling any non-static member function other than the destructor on such barrier results in undefined behavior. In other words, such barrier can only be destroyed.

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.