| 283 | */ |
| 284 | template <typename Func> |
| 285 | bool enqueue_with( Func f ) |
| 286 | { |
| 287 | scoped_node_ptr p( alloc_node()); |
| 288 | f( p->m_value ); |
| 289 | if ( base_class::enqueue( *p )) { |
| 290 | p.release(); |
| 291 | return true; |
| 292 | } |
| 293 | return false; |
| 294 | } |
| 295 | |
| 296 | /// Enqueues data of type \ref value_type constructed from <tt>std::forward<Args>(args)...</tt> |
| 297 | template <typename... Args> |