Guest User

Untitled

a guest
Jul 29th, 2013
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. template< typename base, typename v >
  2. constexpr bool is_passable_fn( ... ) { static_assert ( sizeof (base) > 0, "Pass to incomplete type." ); return false; }
  3.  
  4. template< typename base, typename v >
  5. constexpr typename std::enable_if< std::is_void< decltype ( next_stage( std::declval< base & >() ).template pass< pass_policy::enable_if >( std::declval< v >() ) ) >::value, bool >::type
  6. is_passable_fn( int ) { return true; }
  7.  
  8. template< typename base, typename v, typename q = void >
  9. struct is_passable : std::integral_constant< bool, is_passable_fn< base, v >(0) > {};
  10.  
  11. template< typename base, typename v >
  12. struct is_passable< base, v, decltype( next_stage( std::declval< base & >() ).template pass< pass_policy::enable_if >( std::declval< v && >() ) ) > : std::true_type {};
Advertisement
Add Comment
Please, Sign In to add comment