// 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