diff -ur include.orig/EH.H include/EH.H
--- include.orig/EH.H	Sat Mar 17 07:15:22 2001
+++ include/EH.H	Thu Jan 09 14:41:48 2003
@@ -1,37 +1,20 @@
 /* Copyright (C) 1986-2001 by Digital Mars. $Revision: 1.1.1.1 $ */
-#if __SC__ || __RCC__
+#if __DMC__ || __RCC__
 #pragma once
 #endif
 
 #ifndef __EXCEPT_H
 #define __EXCEPT_H 1
 
-/* Define _CRTAPI1 (for compatibility with the NT SDK) */
-#ifndef _CRTAPI1
-#define _CRTAPI1 __cdecl
-#endif
-
-/* Define _CRTAPI2 (for compatibility with the NT SDK) */
-#ifndef _CRTAPI2
-#define _CRTAPI2 __cdecl
-#endif
-
-/* Define CRTIMP */
-#ifndef _CRTIMP
-#if defined(_WIN32) && defined(_DLL)
-#define _CRTIMP  __declspec(dllimport)
-#else
-#define _CRTIMP
-#endif
-#endif
+#include <exception>
 
-typedef void (__cdecl *__eh_fp)();
+typedef std::unexpected_handler __eh_fp;
 
-__eh_fp __cdecl set_terminate(__eh_fp);
-__eh_fp __cdecl set_unexpected(__eh_fp);
+using std::set_unexpected;
+using std::set_terminate;
 
-void __cdecl terminate();
-void __cdecl unexpected();
+using std::unexpected;
+using std::termainte;
 
 #endif
 
diff -ur include.orig/exception include/exception
--- include.orig/exception	Fri Jan 10 00:07:13 2003
+++ include/exception	Sun Jan 12 13:45:33 2003
@@ -0,0 +1,49 @@
+#if __DMC__ || __RCC__
+#pragma once
+#endif
+
+#ifndef __EXCEPTION
+#define __EXCEPTION 1
+
+#ifndef __cplusplus
+#error	Use C++ compiler for exception
+#endif
+
+
+extern "C++" {
+namespace std
+{
+
+class exception
+{
+    public:
+	exception() throw();
+	exception(const exception&) throw();
+	exception& operator=(const exception&) throw();
+	virtual ~exception() throw();
+	virtual const char *what() const throw();
+};
+
+class bad_exception : public exception
+{
+    public:
+	bad_exception() throw();
+	bad_exception(const bad_exception&) throw();
+	bad_exception& operator=(const bad_exception&) throw();
+	virtual ~bad_exception() throw();
+	virtual const char *what() const throw();
+};
+
+typedef void (__cdecl *unexpected_handler)();
+unexpected_handler __cdecl set_unexpected(unexpected_handler f) throw();
+void __cdecl unexpected();
+
+typedef void (__cdecl *terminate_handler)();
+terminate_handler __cdecl set_terminate(terminate_handler f) throw();
+void __cdecl terminate();
+
+bool __cdecl uncaught_exception();
+}
+};
+
+#endif
diff -ur include.orig/typeinfo include/typeinfo
--- include.orig/typeinfo	Fri Jan 10 00:07:19 2003
+++ include/typeinfo	Sun Jan 12 13:45:37 2003
@@ -0,0 +1,76 @@
+#if __DMC__ || __RCC__
+#pragma once
+#endif
+
+#ifndef __TYPEINFO
+#define __TYPEINFO 1
+
+#ifndef __cplusplus
+#error	Use C++ compiler for typeinfo
+#endif
+
+#include <exception>
+
+
+extern "C++" {
+namespace std
+{
+
+class type_info
+{
+    public:
+	void *pdata;
+
+    protected:
+	type_info(const type_info&);
+	type_info& operator=(const type_info&);
+
+    public:
+	virtual ~type_info();
+
+	bool operator==(const type_info&) const;
+	bool operator!=(const type_info&) const;
+	bool before(const type_info&);
+	const char *name() const;
+};
+
+class bad_cast : public exception
+{
+    public:
+	bad_cast() throw();
+	bad_cast(const bad_cast&) throw();
+	bad_cast& operator=(const bad_cast&) throw();
+	virtual ~bad_cast() throw();
+	virtual const char *what() const throw();
+};
+
+class bad_typeid : public exception
+{
+    public:
+	bad_typeid() throw();
+	bad_typeid(const bad_typeid&) throw();
+	bad_typeid& operator=(const bad_typeid&) throw();
+	virtual ~bad_typeid() throw();
+	virtual const char *what() const throw();
+};
+
+}
+
+class Type_info
+  : public std::type_info
+{
+    private:
+	__cdecl Type_info(const Type_info&);
+	Type_info& __cdecl operator=(const Type_info&);
+
+    public:
+	virtual ~Type_info();
+
+	int __cdecl operator==(const Type_info&) const;
+	int __cdecl operator!=(const Type_info&) const;
+	int __cdecl before(const Type_info&);
+	const char * __cdecl name() const;
+};
+};
+
+#endif
diff -ur include.orig/typeinfo.h include/typeinfo.h
--- include.orig/typeinfo.h	Fri Dec 20 00:25:02 2002
+++ include/typeinfo.h	Thu Jan 09 21:59:06 2003
@@ -12,42 +12,8 @@
 #error	Use C++ compiler for typeinfo.h
 #endif
 
-extern "C++" {
+#include "typeinfo"
 
-class Type_info
-{
-    public:
-	void *pdata;
-
-    private:
-	__cdecl Type_info(const Type_info&);
-	Type_info& __cdecl operator=(const Type_info&);
-
-    public:
-	virtual __cdecl ~Type_info();
-
-	int __cdecl operator==(const Type_info&) const;
-	int __cdecl operator!=(const Type_info&) const;
-	int __cdecl before(const Type_info&);
-	const char * __cdecl name() const;
-};
-
-typedef Type_info type_info;	// for C++ 98
-
-};
-
-class Bad_cast { };
-
-typedef Bad_cast bad_cast;	// for C++ 98
-
-namespace std
-{
-    using ::type_info;
-    using ::bad_cast;
-
-    class bad_typeid
-    {
-    };
-}
+typedef std::bad_cast Bad_cast;
 
 #endif
