整理
This commit is contained in:
41
include/boost/core/functor.hpp
Normal file
41
include/boost/core/functor.hpp
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright Andrey Semashev 2024.
|
||||
* 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)
|
||||
*/
|
||||
/*!
|
||||
* \file functor.hpp
|
||||
* \author Andrey Semashev
|
||||
* \date 2024-01-23
|
||||
*
|
||||
* This header contains a \c functor implementation. This is a function object
|
||||
* that invokes a function that is specified as its template parameter.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_CORE_FUNCTOR_HPP
|
||||
#define BOOST_CORE_FUNCTOR_HPP
|
||||
|
||||
namespace boost::core {
|
||||
|
||||
// Block unintended ADL
|
||||
namespace functor_ns {
|
||||
|
||||
//! A function object that invokes a function specified as its template parameter
|
||||
template< auto Function >
|
||||
struct functor
|
||||
{
|
||||
template< typename... Args >
|
||||
auto operator() (Args&&... args) const noexcept(noexcept(Function(static_cast< Args&& >(args)...))) -> decltype(Function(static_cast< Args&& >(args)...))
|
||||
{
|
||||
return Function(static_cast< Args&& >(args)...);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace functor_ns
|
||||
|
||||
using functor_ns::functor;
|
||||
|
||||
} // namespace boost::core
|
||||
|
||||
#endif // BOOST_CORE_FUNCTOR_HPP
|
||||
Reference in New Issue
Block a user