diff --git a/src/beast/Builds/VisualStudio2012/beast.vcxproj b/src/beast/Builds/VisualStudio2012/beast.vcxproj
index 934a28286..455746b30 100644
--- a/src/beast/Builds/VisualStudio2012/beast.vcxproj
+++ b/src/beast/Builds/VisualStudio2012/beast.vcxproj
@@ -180,6 +180,7 @@
+
diff --git a/src/beast/Builds/VisualStudio2012/beast.vcxproj.filters b/src/beast/Builds/VisualStudio2012/beast.vcxproj.filters
index 171a1a51f..077df7635 100644
--- a/src/beast/Builds/VisualStudio2012/beast.vcxproj.filters
+++ b/src/beast/Builds/VisualStudio2012/beast.vcxproj.filters
@@ -1251,6 +1251,9 @@
beast\threads
+
+ beast\utility
+
diff --git a/src/beast/beast/Utility.h b/src/beast/beast/Utility.h
index 952d0c225..b7cd0854c 100644
--- a/src/beast/beast/Utility.h
+++ b/src/beast/beast/Utility.h
@@ -20,6 +20,7 @@
#ifndef BEAST_UTILITY_H_INCLUDED
#define BEAST_UTILITY_H_INCLUDED
+#include "utility/BaseFromMember.h"
#include "utility/Debug.h"
#include "utility/EnableIf.h"
#include "utility/Error.h"
diff --git a/src/beast/beast/utility/BaseFromMember.h b/src/beast/beast/utility/BaseFromMember.h
new file mode 100644
index 000000000..e2103b649
--- /dev/null
+++ b/src/beast/beast/utility/BaseFromMember.h
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+/*
+ This file is part of rippled: https://github.com/ripple/rippled
+ Copyright (c) 2012, 2013 Ripple Labs Inc.
+
+ 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_UTILITY_BASEFROMMEMBER_H_INCLUDED
+#define BEAST_UTILITY_BASEFROMMEMBER_H_INCLUDED
+
+namespace beast {
+
+template
+class BaseFromMember
+{
+private:
+ T m_t;
+
+public:
+ BaseFromMember ()
+ : m_t (T())
+ {
+ }
+
+ template
+ explicit BaseFromMember (P1 const& p1)
+ : m_t (p1)
+ { }
+
+ template
+ BaseFromMember (P1 const& p1, P2 const& p2)
+ : m_t (p1, p2)
+ { }
+
+ template
+ BaseFromMember (P1 const& p1, P2 const& p2, P3 const& p3)
+ : m_t (p1, p2, p3)
+ { }
+
+ template
+ BaseFromMember (P1 const& p1, P2 const& p2, P3 const& p3, P4 const& p4)
+ : m_t (p1, p2, p3, p4)
+ { }
+
+ template
+ BaseFromMember (P1 const& p1, P2 const& p2, P3 const& p3, P4 const& p4, P5 const& p5)
+ : m_t (p1, p2, p3, p4, p5)
+ { }
+
+ T& member()
+ { return m_t; }
+
+ T const& member() const
+ { return m_t; }
+};
+
+}
+
+#endif