39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// Copyright 2005 The Trustees of Indiana University.
 | 
						|
 | 
						|
// Use, modification and distribution is subject to the Boost Software
 | 
						|
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 | 
						|
// http://www.boost.org/LICENSE_1_0.txt)
 | 
						|
 | 
						|
//  Authors: Douglas Gregor
 | 
						|
//           Andrew Lumsdaine
 | 
						|
 | 
						|
#ifndef BOOST_PARALLEL_BASIC_REDUCE_HPP
 | 
						|
#define BOOST_PARALLEL_BASIC_REDUCE_HPP
 | 
						|
 | 
						|
namespace boost { namespace parallel {
 | 
						|
 | 
						|
/** Reduction operation used to reconcile differences between local
 | 
						|
 * and remote values for a particular key in a property map.  The
 | 
						|
 * type @c T is typically the @c value_type of the property
 | 
						|
 * map. This basic reduction returns a default-constructed @c T as
 | 
						|
 * the default value and always resolves to the remote value.
 | 
						|
 */
 | 
						|
template<typename T>
 | 
						|
struct basic_reduce
 | 
						|
{
 | 
						|
  BOOST_STATIC_CONSTANT(bool, non_default_resolver = false);
 | 
						|
 | 
						|
  /// Returns a default-constructed T object
 | 
						|
  template<typename Key>
 | 
						|
  T operator()(const Key&) const { return T(); }
 | 
						|
  
 | 
						|
  /// Returns the remote value
 | 
						|
  template<typename Key>
 | 
						|
  const T& operator()(const Key&, const T&, const T& remote) const 
 | 
						|
  { return remote; }
 | 
						|
};
 | 
						|
 | 
						|
} } // end namespace boost::parallel
 | 
						|
 | 
						|
#endif // BOOST_PARALLEL_BASIC_REDUCE_HPP
 |