diff --git a/proj/vc7ide/intermodule_singleton_test.vcproj b/proj/vc7ide/intermodule_singleton_test.vcproj
new file mode 100644
index 0000000..1326a3a
--- /dev/null
+++ b/proj/vc7ide/intermodule_singleton_test.vcproj
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/intermodule_singleton_test.cpp b/test/intermodule_singleton_test.cpp
new file mode 100644
index 0000000..7a7a16e
--- /dev/null
+++ b/test/intermodule_singleton_test.cpp
@@ -0,0 +1,93 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/interprocess for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+#include
+#include
+#include
+
+using namespace boost::interprocess;
+
+class MyClass
+{
+ public:
+ MyClass()
+ {
+ std::cout << "Constructor\n";
+ }
+
+ void shout() const
+ {
+ std::cout << "Shout\n";
+ }
+
+ ~MyClass()
+ {
+ std::cout << "Destructor\n";
+ }
+};
+
+class MyDerivedClass
+ : public MyClass
+{};
+
+class MyThrowingClass
+{
+ public:
+ MyThrowingClass()
+ {
+ throw int(0);
+ }
+};
+
+
+
+int main ()
+{
+ bool exception_thrown = false;
+ bool exception_2_thrown = false;
+ try{
+ detail::intermodule_singleton::get();
+ }
+ catch(int &){
+ exception_thrown = true;
+ //Second try
+ try{
+ detail::intermodule_singleton::get();
+ }
+ catch(interprocess_exception &){
+ exception_2_thrown = true;
+ }
+ }
+
+ if(!exception_thrown || !exception_2_thrown){
+ return 1;
+ }
+
+ MyClass & mc = detail::intermodule_singleton::get();
+ mc.shout();
+ detail::intermodule_singleton::get().shout();
+ detail::intermodule_singleton::get().shout();
+
+ //Second try
+ exception_2_thrown = false;
+ try{
+ detail::intermodule_singleton::get();
+ }
+ catch(interprocess_exception &){
+ exception_2_thrown = true;
+ }
+ if(!exception_2_thrown){
+ return 1;
+ }
+
+ return 0;
+}
+
+#include
+
diff --git a/test/movable_int.hpp b/test/movable_int.hpp
index 1026bdc..c58a883 100644
--- a/test/movable_int.hpp
+++ b/test/movable_int.hpp
@@ -79,7 +79,7 @@ std::basic_ostream & operator<<
class movable_and_copyable_int
{
- BOOST_COPYABLE_AND_MOVABLE(movable_and_copyable_int)
+ BOOST_INTERPROCESS_COPYABLE_AND_MOVABLE(movable_and_copyable_int)
public:
movable_and_copyable_int()