mirror of https://github.com/CGAL/cgal
Add a test for result_of.
This commit is contained in:
parent
e3d5fccf5b
commit
747add59d6
|
|
@ -22,55 +22,5 @@
|
||||||
#define CGAL_REPLACEMENT_HEADER "<CGAL/config.h>"
|
#define CGAL_REPLACEMENT_HEADER "<CGAL/config.h>"
|
||||||
|
|
||||||
#include <CGAL/config.h>
|
#include <CGAL/config.h>
|
||||||
#include <CGAL/disable_warnings.h>
|
|
||||||
|
|
||||||
#if CGAL_CXX20 || __cpp_lib_is_invocable>=201703L
|
|
||||||
|
|
||||||
// C++>=17
|
|
||||||
|
|
||||||
#elif CGAL_CXX11
|
|
||||||
|
|
||||||
#include <type_traits>
|
|
||||||
|
|
||||||
#else // C++<11
|
|
||||||
|
|
||||||
// Address the warning C4003: not enough actual parameters for macro 'BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY'
|
|
||||||
// result_of.hpp includes files from boost/preprocessor
|
|
||||||
// This concerns boost 1_65_1
|
|
||||||
#if defined(BOOST_MSVC)
|
|
||||||
#pragma warning(push)
|
|
||||||
#pragma warning(disable: 4003)
|
|
||||||
#endif
|
|
||||||
#include <boost/utility/result_of.hpp>
|
|
||||||
#if defined(BOOST_MSVC)
|
|
||||||
#pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
#include <boost/version.hpp>
|
|
||||||
|
|
||||||
#endif // end C++<11
|
|
||||||
|
|
||||||
namespace CGAL {
|
|
||||||
namespace cpp11 {
|
|
||||||
|
|
||||||
#if CGAL_CXX20 || __cpp_lib_is_invocable>=201703L
|
|
||||||
|
|
||||||
template<typename Signature> class result_of;
|
|
||||||
template<typename F, typename... Args>
|
|
||||||
class result_of<F(Args...)> : public std::invoke_result<F, Args...> { };
|
|
||||||
|
|
||||||
#elif CGAL_CXX11
|
|
||||||
|
|
||||||
using std::result_of;
|
|
||||||
|
|
||||||
#else // C++<11
|
|
||||||
|
|
||||||
using boost::result_of;
|
|
||||||
|
|
||||||
#endif // end C++<11
|
|
||||||
|
|
||||||
} // end cpp11
|
|
||||||
} // end CGAL
|
|
||||||
|
|
||||||
#include <CGAL/enable_warnings.h>
|
|
||||||
|
|
||||||
#endif // CGAL_RESULT_OF_H
|
#endif // CGAL_RESULT_OF_H
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,9 @@
|
||||||
#include <boost/type_traits/is_same.hpp>
|
#include <boost/type_traits/is_same.hpp>
|
||||||
#include <boost/typeof/typeof.hpp>
|
#include <boost/typeof/typeof.hpp>
|
||||||
|
|
||||||
|
#include <CGAL/disable_warnings.h>
|
||||||
|
#include <CGAL/result_of.h>
|
||||||
|
#include<CGAL/enable_warnings.h>
|
||||||
using namespace CGAL;
|
using namespace CGAL;
|
||||||
|
|
||||||
struct item : public In_place_list_base<item> {
|
struct item : public In_place_list_base<item> {
|
||||||
|
|
@ -8217,6 +8220,27 @@ void test_make_sorted_pair() {
|
||||||
std::pair<int,int> >::value) );
|
std::pair<int,int> >::value) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test_result_of() {
|
||||||
|
struct Result_functor
|
||||||
|
{
|
||||||
|
int operator()()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
float operator()(const int&)
|
||||||
|
{
|
||||||
|
return 0.0f;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef CGAL::cpp11::result_of<Result_functor(void)>::type result_type;
|
||||||
|
typedef CGAL::cpp11::result_of<Result_functor(int)>::type result_type_float;
|
||||||
|
CGAL_static_assertion((boost::is_same<result_type, int>::value));
|
||||||
|
CGAL_static_assertion((boost::is_same<result_type_float, float>::value));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
init_global_data();
|
init_global_data();
|
||||||
test_Circulator_identity();
|
test_Circulator_identity();
|
||||||
|
|
@ -8239,6 +8263,7 @@ int main() {
|
||||||
test_prev_next();
|
test_prev_next();
|
||||||
test_copy_n();
|
test_copy_n();
|
||||||
test_make_sorted_pair();
|
test_make_sorted_pair();
|
||||||
|
test_result_of();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
// EOF //
|
// EOF //
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue