37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								// (C) Copyright David Abrahams 2001.
							 | 
						||
| 
								 | 
							
								// Distributed under 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)
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// See http://www.boost.org for most recent version including documentation.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Revision History
							 | 
						||
| 
								 | 
							
								// 09 Feb 01  Applied John Maddock's Borland patch Moving <true>
							 | 
						||
| 
								 | 
							
								//            specialization to unspecialized template (David Abrahams)
							 | 
						||
| 
								 | 
							
								// 06 Feb 01  Created (David Abrahams)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef SELECT_TYPE_DWA20010206_HPP
							 | 
						||
| 
								 | 
							
								# define SELECT_TYPE_DWA20010206_HPP
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace boost { namespace detail {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // Template class if_true -- select among 2 types based on a bool constant expression
							 | 
						||
| 
								 | 
							
								  // Usage:
							 | 
						||
| 
								 | 
							
								  //   typename if_true<(bool_const_expression)>::template then<true_type, false_type>::type
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // HP aCC cannot deal with missing names for template value parameters
							 | 
						||
| 
								 | 
							
								  template <bool b> struct if_true
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								      template <class T, class F>
							 | 
						||
| 
								 | 
							
								      struct then { typedef T type; };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  template <>
							 | 
						||
| 
								 | 
							
								  struct if_true<false>
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								      template <class T, class F>
							 | 
						||
| 
								 | 
							
								      struct then { typedef F type; };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}}
							 | 
						||
| 
								 | 
							
								#endif // SELECT_TYPE_DWA20010206_HPP
							 |