Use std::size_t as argument type for barrier constructor. Add bounded_queue::upper_bound(), lower_bound(), value_pop(). Make is_empty(), is_full() const. Add TimePointType template param to push_wait_until(), pop_wait_until().