45 lines
1.7 KiB
C++
45 lines
1.7 KiB
C++
// Copyright (C) 2011 Davis E. King (davis@dlib.net)
|
|
// License: Boost Software License See LICENSE.txt for the full license.
|
|
#ifndef DLIB_ANY_FUNCTION_ARG_LIST
|
|
#error "You aren't supposed to directly #include this file. #include <dlib/any.h> instead."
|
|
#endif
|
|
|
|
#ifdef DLIB_ANY_FUNCTION_ARG_LIST
|
|
|
|
// The case where function_type has a non-void return type
|
|
template <typename function_type, typename Enabled>
|
|
class any_function<function_type, Enabled, DLIB_ANY_FUNCTION_NUM_ARGS>
|
|
{
|
|
#define DLIB_ANY_FUNCTION_RETURN return
|
|
#include "any_function_impl.h"
|
|
#undef DLIB_ANY_FUNCTION_RETURN
|
|
|
|
private:
|
|
// You get a compiler error about this function being private if you try to assign
|
|
// or copy between any_functions with different types. You must only copy between
|
|
// any_functions that represent functions with the same signature.
|
|
template <typename T, typename U> any_function(const any_function<T,U>&);
|
|
};
|
|
|
|
// The case where function_type has a void return type
|
|
template <typename function_type>
|
|
class any_function<function_type, typename sig_traits<function_type>::type, DLIB_ANY_FUNCTION_NUM_ARGS>
|
|
{
|
|
#define DLIB_ANY_FUNCTION_RETURN
|
|
#include "any_function_impl.h"
|
|
#undef DLIB_ANY_FUNCTION_RETURN
|
|
|
|
private:
|
|
// You get a compiler error about this function being private if you try to assign
|
|
// or copy between any_functions with different types. You must only copy between
|
|
// any_functions that represent functions with the same signature.
|
|
template <typename T> any_function(const any_function<T>&);
|
|
};
|
|
|
|
#undef DLIB_ANY_FUNCTION_ARG_LIST
|
|
#undef DLIB_ANY_FUNCTION_ARGS
|
|
#undef DLIB_ANY_FUNCTION_NUM_ARGS
|
|
|
|
#endif // DLIB_ANY_FUNCTION_ARG_LIST
|
|
|