forked from boostorg/core
		
	
		
			
	
	
		
			47 lines
		
	
	
		
			780 B
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			780 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								Copyright 2023 Glen Joseph Fernandes
							 | 
						||
| 
								 | 
							
								(glenjofe@gmail.com)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Distributed under the Boost Software License, Version 1.0.
							 | 
						||
| 
								 | 
							
								(http://www.boost.org/LICENSE_1_0.txt)
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								#ifndef BOOST_CORE_DATA_HPP
							 | 
						||
| 
								 | 
							
								#define BOOST_CORE_DATA_HPP
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <initializer_list>
							 | 
						||
| 
								 | 
							
								#include <cstddef>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace boost {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template<class C>
							 | 
						||
| 
								 | 
							
								inline constexpr auto
							 | 
						||
| 
								 | 
							
								data(C& c) noexcept(noexcept(c.data())) -> decltype(c.data())
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    return c.data();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template<class C>
							 | 
						||
| 
								 | 
							
								inline constexpr auto
							 | 
						||
| 
								 | 
							
								data(const C& c) noexcept(noexcept(c.data())) -> decltype(c.data())
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    return c.data();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template<class T, std::size_t N>
							 | 
						||
| 
								 | 
							
								inline constexpr T*
							 | 
						||
| 
								 | 
							
								data(T(&a)[N]) noexcept
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    return a;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template<class T>
							 | 
						||
| 
								 | 
							
								inline constexpr const T*
							 | 
						||
| 
								 | 
							
								data(std::initializer_list<T> l) noexcept
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    return l.begin();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								} /* boost */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 |