STAPL API Reference          
Overview   Containers   Algorithms   Views   Skeletons   Run-Time System
Modules     Classes    
List of all members | Static Public Member Functions | Public Types
stapl::paragraph_impl::strip_df_proxy< View, V > Struct Template Reference

Metafunction that unwraps redundant proxy / view wrapping such as with the edge_accessor backed proxy when the edge type is a proxy. More...

Static Public Member Functions

static View & apply (View &view)
 

Public Types

using result_type = View
 

Detailed Description

template<typename View, typename V = void>
struct stapl::paragraph_impl::strip_df_proxy< View, V >

Metafunction that unwraps redundant proxy / view wrapping such as with the edge_accessor backed proxy when the edge type is a proxy.

Template Parameters
ViewThe view set element to inspect for redundant wrapping.
VDefault assigned template parameter that employs SFINAE to select a specific specialization if the view set element is a view.

The user level code need not see proxy<proxy<T>> or proxy<view<T>>, strip_df_proxy unwraps redundant wrappers (from the user workfunction's perspective) as both of the nested types in the case already represent a lightweight reference to the underlying element type. The PARAGRAPH framework adds this nesting internally, and here we remove it, prior to invocation of the workfunction via wf_invoke or wf_invoke_void.

We defer this unwrapping until this point, as we are not guaranteed that the underlying type (either a proxy or another view) has been initialized prior to the predecessor it represents being completed, a condition certainly met if we are in Task::operator() where wf_invoke is used to call the user's workfunction.

Primary template is default case, representing on an identity op.

See also
wf_invoke
wf_invoke_void

The documentation for this struct was generated from the following file: