diff --git a/src/beast/Builds/VisualStudio2012/beast.vcxproj b/src/beast/Builds/VisualStudio2012/beast.vcxproj
index 99a33dcd2..ed9877d73 100644
--- a/src/beast/Builds/VisualStudio2012/beast.vcxproj
+++ b/src/beast/Builds/VisualStudio2012/beast.vcxproj
@@ -173,8 +173,6 @@
-
-
@@ -209,6 +207,7 @@
+
diff --git a/src/beast/Builds/VisualStudio2012/beast.vcxproj.filters b/src/beast/Builds/VisualStudio2012/beast.vcxproj.filters
index 8e6eaabfb..5292b52f9 100644
--- a/src/beast/Builds/VisualStudio2012/beast.vcxproj.filters
+++ b/src/beast/Builds/VisualStudio2012/beast.vcxproj.filters
@@ -149,9 +149,6 @@
{91538dcf-b219-4c80-9861-bb4949089775}
-
- {5df65855-1ccd-4997-97c1-f9788924ee2b}
-
{2f5b95a8-1adf-4319-8464-ddc2b2e03f0b}
@@ -737,9 +734,6 @@
beast_core\maths
-
- beast_core\functional
-
beast_core\memory
@@ -962,9 +956,6 @@
beast_asio\protocol
-
- beast_core\functional
-
beast_asio\basics
@@ -1034,6 +1025,9 @@
beast_crypto\math
+
+ beast_core\memory
+
diff --git a/src/beast/modules/beast_core/beast_core.h b/src/beast/modules/beast_core/beast_core.h
index 9c806c00b..497d9c4d0 100644
--- a/src/beast/modules/beast_core/beast_core.h
+++ b/src/beast/modules/beast_core/beast_core.h
@@ -319,7 +319,7 @@ extern BEAST_API void BEAST_CALLTYPE logAssertion (char const* file, int line) n
#include "diagnostic/beast_FPUFlags.h"
#include "memory/SharedObject.h"
#include "memory/SharedPtr.h"
-#include "functional/SharedFunction.h"
+#include "memory/SharedFunction.h"
#include "diagnostic/ProtectedCall.h"
#include "containers/beast_AbstractFifo.h"
#include "text/beast_Identifier.h"
@@ -407,8 +407,6 @@ extern BEAST_API void BEAST_CALLTYPE logAssertion (char const* file, int line) n
#include "diagnostic/MeasureFunctionCallTime.h"
-#include "functional/beast_Function.h"
-
#include "thread/beast_DeadlineTimer.h"
#include "memory/beast_AllocatedBy.h"
diff --git a/src/beast/modules/beast_core/functional/beast_Function.h b/src/beast/modules/beast_core/functional/beast_Function.h
deleted file mode 100644
index bf3653d99..000000000
--- a/src/beast/modules/beast_core/functional/beast_Function.h
+++ /dev/null
@@ -1,266 +0,0 @@
-//------------------------------------------------------------------------------
-/*
- This file is part of Beast: https://github.com/vinniefalco/Beast
- Copyright 2013, Vinnie Falco
-
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted, provided that the above
- copyright notice and this permission notice appear in all copies.
-
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-*/
-//==============================================================================
-
-#ifndef BEAST_FUNCTION_H_INCLUDED
-#define BEAST_FUNCTION_H_INCLUDED
-
-//
-// Strong replacement for boost::function:
-//
-// #1 Bounded memory requirement, avoids the free store.
-//
-// #2 Always refers to a functor (i.e. is never invalid)
-//
-// #3 Default value (None) is a function that
-// returns a default object (the result type
-// constructed with a default constructor).
-//
-
-template
-class Function;
-
-//
-// nullary function
-//
-
-template
-class Function
-{
-public:
- typedef R result_type;
- typedef Function self_type;
-
- struct None
- {
- typedef R result_type;
- result_type operator () () const
- {
- return result_type ();
- }
- };
-
- Function ()
- {
- constructCopyOf (None ());
- }
-
- Function (Function const& f)
- {
- f.getCall ().constructCopyInto (m_storage);
- }
-
- template
- Function (Functor const& f)
- {
- constructCopyOf (f);
- }
-
- ~Function ()
- {
- getCall ().~Call ();
- }
-
- Function& operator= (Function const& f)
- {
- getCall ().~Call ();
- f.getCall ().constructCopyInto (m_storage);
- return *this;
- }
-
- template
- Function& operator= (Functor const& f)
- {
- getCall ().~Call ();
- constructCopyOf (f);
- return *this;
- }
-
- result_type operator () ()
- {
- return getCall ().operator () ();
- }
-
-private:
- template
- void constructCopyOf (Functor const& f)
- {
- // If this generates a compile error it means that
- // the functor is too large for the static buffer.
- // Increase the storage template parameter until
- // the error message goes away. This might cause
- // changes throughout the application with other
- // template classes that depend on the size.
- static_bassert (sizeof (StoredCall ) <= Bytes);
- new (m_storage) StoredCall (f);
- }
-
-private:
- struct Call
- {
- virtual ~Call () {}
- virtual void constructCopyInto (void* p) const = 0;
- virtual result_type operator () () = 0;
- };
-
- template
- struct StoredCall : Call
- {
- explicit StoredCall (Functor const& f) : m_f (f) { }
- StoredCall (const StoredCall& c) : m_f (c.m_f) { }
- void constructCopyInto (void* p) const
- {
- new (p) StoredCall (m_f);
- }
- result_type operator () ()
- {
- return m_f ();
- }
- private:
- Functor m_f;
- };
-
- Call& getCall ()
- {
- return *reinterpret_cast (&m_storage[0]);
- }
-
- Call const& getCall () const
- {
- return *reinterpret_cast (&m_storage[0]);
- }
-
- char m_storage [Bytes]; // should be enough
-};
-
-//------------------------------------------------------------------------------
-
-//
-// unary function
-//
-
-template
-class Function
-{
-public:
- typedef R result_type;
- typedef Function self_type;
-
- struct None
- {
- typedef R result_type;
- result_type operator () (T1) const
- {
- return result_type ();
- }
- };
-
- Function ()
- {
- constructCopyOf (None ());
- }
-
- Function (const Function& f)
- {
- f.getCall ().constructCopyInto (m_storage);
- }
-
- template
- Function (Functor const& f)
- {
- constructCopyOf (f);
- }
-
- ~Function ()
- {
- getCall ().~Call ();
- }
-
- Function& operator= (const Function& f)
- {
- getCall ().~Call ();
- f.getCall ().constructCopyInto (m_storage);
- return *this;
- }
-
- template
- Function& operator= (Functor const& f)
- {
- getCall ().~Call ();
- constructCopyOf (f);
- return *this;
- }
-
- result_type operator () (T1 t1)
- {
- return getCall ().operator () (t1);
- }
-
-private:
- template
- void constructCopyOf (Functor const& f)
- {
- // If this generates a compile error it means that
- // the functor is too large for the static buffer.
- // Increase the storage template parameter until
- // the error message goes away. This might cause
- // changes throughout the application with other
- // template classes that depend on the size.
- static_bassert (sizeof (StoredCall ) <= Bytes);
- new (m_storage) StoredCall (f);
- }
-
-private:
- struct Call
- {
- virtual ~Call () {}
- virtual void constructCopyInto (void* p) const = 0;
- virtual result_type operator () (T1 t1) = 0;
- };
-
- template
- struct StoredCall : Call
- {
- explicit StoredCall (Functor const& f) : m_f (f) { }
- StoredCall (const StoredCall& c) : m_f (c.m_f) { }
- void constructCopyInto (void* p) const
- {
- new (p) StoredCall (m_f);
- }
- result_type operator () (T1 t1)
- {
- return m_f (t1);
- }
- private:
- Functor m_f;
- };
-
- Call& getCall ()
- {
- return *reinterpret_cast (&m_storage[0]);
- }
-
- Call const& getCall () const
- {
- return *reinterpret_cast (&m_storage[0]);
- }
-
- char m_storage [Bytes]; // should be enough
-};
-
-#endif
diff --git a/src/beast/modules/beast_core/functional/SharedFunction.h b/src/beast/modules/beast_core/memory/SharedFunction.h
similarity index 100%
rename from src/beast/modules/beast_core/functional/SharedFunction.h
rename to src/beast/modules/beast_core/memory/SharedFunction.h