Index: trunk/include/iprt/cpp/restanyobject.h
===================================================================
--- trunk/include/iprt/cpp/restanyobject.h	(revision 74415)
+++ trunk/include/iprt/cpp/restanyobject.h	(revision 74425)
@@ -53,5 +53,5 @@
 public:
     /** Default constructor. */
-    RTCRestAnyObject();
+    RTCRestAnyObject() RT_NOEXCEPT;
     /** Destructor. */
     virtual ~RTCRestAnyObject();
@@ -63,54 +63,54 @@
 
     /** Safe copy assignment method. */
-    int assignCopy(RTCRestAnyObject const &a_rThat);
+    int assignCopy(RTCRestAnyObject const &a_rThat) RT_NOEXCEPT;
     /** Safe copy assignment method, boolean variant. */
-    int assignCopy(RTCRestBool const &a_rThat);
+    int assignCopy(RTCRestBool const &a_rThat) RT_NOEXCEPT;
     /** Safe copy assignment method, int64_t variant. */
-    int assignCopy(RTCRestInt64 const &a_rThat);
+    int assignCopy(RTCRestInt64 const &a_rThat) RT_NOEXCEPT;
     /** Safe copy assignment method, int32_t variant. */
-    int assignCopy(RTCRestInt32 const &a_rThat);
+    int assignCopy(RTCRestInt32 const &a_rThat) RT_NOEXCEPT;
     /** Safe copy assignment method, int16_t variant. */
-    int assignCopy(RTCRestInt16 const &a_rThat);
+    int assignCopy(RTCRestInt16 const &a_rThat) RT_NOEXCEPT;
     /** Safe copy assignment method, double variant. */
-    int assignCopy(RTCRestDouble const &a_rThat);
+    int assignCopy(RTCRestDouble const &a_rThat) RT_NOEXCEPT;
     /** Safe copy assignment method, string variant. */
-    int assignCopy(RTCRestString const &a_rThat);
+    int assignCopy(RTCRestString const &a_rThat) RT_NOEXCEPT;
     /** Safe copy assignment method, array variant. */
-    int assignCopy(RTCRestArray<RTCRestAnyObject> const &a_rThat);
+    int assignCopy(RTCRestArray<RTCRestAnyObject> const &a_rThat) RT_NOEXCEPT;
     /** Safe copy assignment method, string map variant. */
-    int assignCopy(RTCRestStringMap<RTCRestAnyObject> const &a_rThat);
+    int assignCopy(RTCRestStringMap<RTCRestAnyObject> const &a_rThat) RT_NOEXCEPT;
 
     /** Safe value assignment method, boolean variant. */
-    int assignValue(bool a_fValue);
+    int assignValue(bool a_fValue) RT_NOEXCEPT;
     /** Safe value assignment method, int64_t variant. */
-    int assignValue(int64_t a_iValue);
+    int assignValue(int64_t a_iValue) RT_NOEXCEPT;
     /** Safe value assignment method, int32_t variant. */
-    int assignValue(int32_t a_iValue);
+    int assignValue(int32_t a_iValue) RT_NOEXCEPT;
     /** Safe value assignment method, int16_t variant. */
-    int assignValue(int16_t a_iValue);
+    int assignValue(int16_t a_iValue) RT_NOEXCEPT;
     /** Safe value assignment method, double variant. */
-    int assignValue(double a_iValue);
+    int assignValue(double a_iValue) RT_NOEXCEPT;
     /** Safe value assignment method, string variant. */
-    int assignValue(RTCString const &a_rValue);
+    int assignValue(RTCString const &a_rValue) RT_NOEXCEPT;
     /** Safe value assignment method, C-string variant. */
-    int assignValue(const char *a_pszValue);
+    int assignValue(const char *a_pszValue) RT_NOEXCEPT;
 
     /** Make a clone of this object. */
-    inline RTCRestAnyObject *clone() const { return (RTCRestAnyObject *)baseClone(); }
+    inline RTCRestAnyObject *clone() const RT_NOEXCEPT { return (RTCRestAnyObject *)baseClone(); }
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int setNull(void) RT_OVERRIDE;
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
-    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int setNull(void) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_NOEXCEPT RT_OVERRIDE;
     virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void);
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT;
     /** Deserialization w/ instantiation. */
     static FNDESERIALIZEINSTANCEFROMJSON deserializeInstanceFromJson;
Index: trunk/include/iprt/cpp/restarray.h
===================================================================
--- trunk/include/iprt/cpp/restarray.h	(revision 74415)
+++ trunk/include/iprt/cpp/restarray.h	(revision 74425)
@@ -42,23 +42,23 @@
 public:
     /** Default destructor. */
-    RTCRestArrayBase();
+    RTCRestArrayBase() RT_NOEXCEPT;
     /** Destructor. */
     virtual ~RTCRestArrayBase();
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
-    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_NOEXCEPT RT_OVERRIDE;
     virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /**
      * Clear the content of the map.
      */
-    void clear();
+    void clear() RT_NOEXCEPT;
 
     /**
@@ -67,5 +67,5 @@
      * @return   True if there is more than zero items, false otherwise.
      */
-    inline bool isEmpty() const
+    inline bool isEmpty() const RT_NOEXCEPT
     {
         return m_cElements == 0;
@@ -75,5 +75,5 @@
      * Gets the number of entries in the map.
      */
-    inline size_t size() const
+    inline size_t size() const RT_NOEXCEPT
     {
         return m_cElements;
@@ -86,5 +86,5 @@
      * @param   a_idx           The array index.
      */
-    inline RTCRestObjectBase *atBase(size_t a_idx)
+    inline RTCRestObjectBase *atBase(size_t a_idx) RT_NOEXCEPT
     {
         if (a_idx < m_cElements)
@@ -99,5 +99,5 @@
      * @param   a_idx           The array index.
      */
-    inline RTCRestObjectBase const *atBase(size_t a_idx) const
+    inline RTCRestObjectBase const *atBase(size_t a_idx) const RT_NOEXCEPT
     {
         if (a_idx < m_cElements)
@@ -112,5 +112,5 @@
      *                      The value ~(size_t)0 is an alias for the final element.
      */
-    bool removeAt(size_t a_idx);
+    bool removeAt(size_t a_idx) RT_NOEXCEPT;
 
     /**
@@ -120,5 +120,5 @@
      * @param   a_cEnsureCapacity   The number of elements to ensure capacity to hold.
      */
-    int ensureCapacity(size_t a_cEnsureCapacity);
+    int ensureCapacity(size_t a_cEnsureCapacity) RT_NOEXCEPT;
 
 
@@ -137,5 +137,5 @@
      * @returns Pointer to new array on success, NULL if out of memory.
      */
-    virtual RTCRestArrayBase *createClone(void) const = 0;
+    virtual RTCRestArrayBase *createClone(void) const RT_NOEXCEPT = 0;
 
     /**
@@ -144,13 +144,13 @@
      * @returns Pointer to new value object on success, NULL if out of memory.
      */
-    virtual RTCRestObjectBase *createValue(void) = 0;
+    virtual RTCRestObjectBase *createValue(void) RT_NOEXCEPT = 0;
 
     /**
      * For accessing the static deserializeInstanceFromJson() method of the value.
      */
-    virtual int deserializeValueInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) = 0;
-
-    /**
-     * Worker for the copy constructor and the assignment operator.
+    virtual int deserializeValueInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT = 0;
+
+    /**
+     * Worker for the copy assignment method and copyArrayWorkerMayThrow().
      *
      * This will use createEntryCopy to do the copying.
@@ -159,7 +159,12 @@
      * @param   a_rThat     The array to copy.  Caller makes 100% sure the it has
      *                      the same type as the destination.
-     * @param   a_fThrow    Whether to throw error.
-     */
-    int copyArrayWorker(RTCRestArrayBase const &a_rThat, bool a_fThrow);
+     */
+    int copyArrayWorkerNoThrow(RTCRestArrayBase const &a_rThat) RT_NOEXCEPT;
+
+    /**
+     * Wrapper around copyArrayWorkerNoThrow for the copy constructor and the
+     * assignment operator.
+     */
+    void copyArrayWorkerMayThrow(RTCRestArrayBase const &a_rThat);
 
     /**
@@ -172,5 +177,5 @@
      * @param   a_fReplace      Whether to replace existing entry rather than insert.
      */
-    int insertWorker(size_t a_idx, RTCRestObjectBase *a_pValue, bool a_fReplace);
+    int insertWorker(size_t a_idx, RTCRestObjectBase *a_pValue, bool a_fReplace) RT_NOEXCEPT;
 
     /**
@@ -183,5 +188,5 @@
      * @param   a_fReplace      Whether to replace existing key-value pair with matching key.
      */
-    int insertCopyWorker(size_t a_idx, RTCRestObjectBase const &a_rValue, bool a_fReplace);
+    int insertCopyWorker(size_t a_idx, RTCRestObjectBase const &a_rValue, bool a_fReplace) RT_NOEXCEPT;
 
 private:
@@ -201,5 +206,5 @@
 public:
     /** Default constructor - empty array. */
-    RTCRestArray()
+    RTCRestArray() RT_NOEXCEPT
         : RTCRestArrayBase()
     {
@@ -215,5 +220,5 @@
         : RTCRestArrayBase()
     {
-        copyArrayWorker(a_rThat, true /*fThrow*/);
+        copyArrayWorkerMayThrow(a_rThat);
     }
 
@@ -221,16 +226,16 @@
     inline RTCRestArray &operator=(RTCRestArray const &a_rThat)
     {
-        copyArrayWorker(a_rThat, true /*fThrow*/);
+        copyArrayWorkerMayThrow(a_rThat);
         return *this;
     }
 
     /** Safe copy assignment method. */
-    inline int assignCopy(RTCRestArray const &a_rThat)
-    {
-        return copyArrayWorker(a_rThat, false /*fThrow*/);
+    inline int assignCopy(RTCRestArray const &a_rThat) RT_NOEXCEPT
+    {
+        return copyArrayWorkerNoThrow(a_rThat);
     }
 
     /** Make a clone of this object. */
-    inline RTCRestArray *clone() const
+    inline RTCRestArray *clone() const RT_NOEXCEPT
     {
         return (RTCRestArray *)baseClone();
@@ -238,5 +243,5 @@
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void)
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT
     {
         return new (std::nothrow) RTCRestArray<ElementType>();
@@ -244,5 +249,5 @@
 
     /** Factory method for elements. */
-    static DECLCALLBACK(RTCRestObjectBase *) createElementInstance(void)
+    static DECLCALLBACK(RTCRestObjectBase *) createElementInstance(void) RT_NOEXCEPT
     {
         return new (std::nothrow) ElementType();
@@ -250,5 +255,5 @@
 
     /** @copydoc RTCRestObjectBase::FNDESERIALIZEINSTANCEFROMJSON */
-    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance)
+    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT
     {
         *a_ppInstance = new (std::nothrow) RTCRestArray<ElementType>();
@@ -267,5 +272,5 @@
      * @param   a_pThat         The object to insert.  The array takes ownership of the object on success.
      */
-    inline int insert(size_t a_idx, ElementType *a_pThat)
+    inline int insert(size_t a_idx, ElementType *a_pThat) RT_NOEXCEPT
     {
         return insertWorker(a_idx, a_pThat, false /*a_fReplace*/);
@@ -280,5 +285,5 @@
      * @param   a_rThat         The object to insert a copy of.
      */
-    inline int insertCopy(size_t a_idx, ElementType const &a_rThat)
+    inline int insertCopy(size_t a_idx, ElementType const &a_rThat) RT_NOEXCEPT
     {
         return insertCopyWorker(a_idx, a_rThat, false /*a_fReplace*/);
@@ -292,5 +297,5 @@
      * @param   a_pThat         The object to insert.  The array takes ownership of the object on success.
      */
-    inline int append(ElementType *a_pThat)
+    inline int append(ElementType *a_pThat) RT_NOEXCEPT
     {
         return insertWorker(~(size_t)0, a_pThat, false /*a_fReplace*/);
@@ -304,5 +309,5 @@
      * @param   a_rThat         The object to insert a copy of.
      */
-    inline int appendCopy(ElementType const &a_rThat)
+    inline int appendCopy(ElementType const &a_rThat) RT_NOEXCEPT
     {
         return insertCopyWorker(~(size_t)0, a_rThat, false /*a_fReplace*/);
@@ -316,5 +321,5 @@
      * @param   a_pThat         The object to insert.  The array takes ownership of the object on success.
      */
-    inline int prepend(ElementType *a_pThat)
+    inline int prepend(ElementType *a_pThat) RT_NOEXCEPT
     {
         return insertWorker(0, a_pThat, false /*a_fReplace*/);
@@ -328,5 +333,5 @@
      * @param   a_rThat         The object to insert a copy of.
      */
-    inline int prependCopy(ElementType const &a_rThat)
+    inline int prependCopy(ElementType const &a_rThat) RT_NOEXCEPT
     {
         return insertCopyWorker(0, a_rThat, false /*a_fReplace*/);
@@ -341,5 +346,5 @@
      * @param   a_pThat         The replacement object.  The array takes ownership of the object on success.
      */
-    inline int replace(size_t a_idx, ElementType *a_pThat)
+    inline int replace(size_t a_idx, ElementType *a_pThat) RT_NOEXCEPT
     {
         return insertWorker(a_idx, a_pThat, true /*a_fReplace*/);
@@ -354,5 +359,5 @@
      * @param   a_rThat         The object to insert a copy of.
      */
-    inline int replaceCopy(size_t a_idx, ElementType const &a_rThat)
+    inline int replaceCopy(size_t a_idx, ElementType const &a_rThat) RT_NOEXCEPT
     {
         return insertCopyWorker(a_idx, a_rThat, true /*a_fReplace*/);
@@ -365,5 +370,5 @@
      * @param   a_idx           The array index.
      */
-    inline ElementType *at(size_t a_idx)
+    inline ElementType *at(size_t a_idx) RT_NOEXCEPT
     {
         if (a_idx < m_cElements)
@@ -378,5 +383,5 @@
      * @param   a_idx           The array index.
      */
-    inline ElementType const *at(size_t a_idx) const
+    inline ElementType const *at(size_t a_idx) const RT_NOEXCEPT
     {
         if (a_idx < m_cElements)
@@ -389,5 +394,5 @@
      * @returns The first object, NULL if empty.
      */
-    inline ElementType *first()
+    inline ElementType *first() RT_NOEXCEPT
     {
         return at(0);
@@ -398,5 +403,5 @@
      * @returns The first object, NULL if empty.
      */
-    inline ElementType const *first() const
+    inline ElementType const *first() const RT_NOEXCEPT
     {
         return at(0);
@@ -407,5 +412,5 @@
      * @returns The last object, NULL if empty.
      */
-    inline ElementType *last()
+    inline ElementType *last() RT_NOEXCEPT
     {
         return at(m_cElements - 1);
@@ -416,5 +421,5 @@
      * @returns The last object, NULL if empty.
      */
-    inline ElementType const *last() const
+    inline ElementType const *last() const RT_NOEXCEPT
     {
         return at(m_cElements - 1);
@@ -423,15 +428,15 @@
 
 protected:
-    virtual RTCRestArrayBase *createClone(void) const RT_OVERRIDE
+    virtual RTCRestArrayBase *createClone(void) const RT_NOEXCEPT RT_OVERRIDE
     {
         return new (std::nothrow) RTCRestArray();
     }
 
-    virtual RTCRestObjectBase *createValue(void) RT_OVERRIDE
+    virtual RTCRestObjectBase *createValue(void) RT_NOEXCEPT RT_OVERRIDE
     {
         return new (std::nothrow) ElementType();
     }
 
-    virtual int deserializeValueInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_OVERRIDE
+    virtual int deserializeValueInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT RT_OVERRIDE
     {
         return ElementType::deserializeInstanceFromJson(a_rCursor, a_ppInstance);
Index: trunk/include/iprt/cpp/restbase.h
===================================================================
--- trunk/include/iprt/cpp/restbase.h	(revision 74415)
+++ trunk/include/iprt/cpp/restbase.h	(revision 74425)
@@ -61,13 +61,13 @@
     RTCRestJsonPrimaryCursor           *m_pPrimary;
 
-    RTCRestJsonCursor(struct RTCRestJsonCursor const &a_rParent)
+    RTCRestJsonCursor(struct RTCRestJsonCursor const &a_rParent) RT_NOEXCEPT
         : m_hValue(NIL_RTJSONVAL), m_pszName(NULL), m_pParent(&a_rParent), m_pPrimary(a_rParent.m_pPrimary)
     { }
 
-    RTCRestJsonCursor(RTJSONVAL hValue, const char *pszName, struct RTCRestJsonCursor *pParent)
+    RTCRestJsonCursor(RTJSONVAL hValue, const char *pszName, struct RTCRestJsonCursor *pParent) RT_NOEXCEPT
         : m_hValue(hValue), m_pszName(pszName), m_pParent(pParent), m_pPrimary(pParent->m_pPrimary)
     { }
 
-    RTCRestJsonCursor(RTJSONVAL hValue, const char *pszName)
+    RTCRestJsonCursor(RTJSONVAL hValue, const char *pszName) RT_NOEXCEPT
         : m_hValue(hValue), m_pszName(pszName), m_pParent(NULL), m_pPrimary(NULL)
     { }
@@ -96,5 +96,5 @@
 
     /** Creates a primary json cursor with optiona error info. */
-    RTCRestJsonPrimaryCursor(RTJSONVAL hValue, const char *pszName, PRTERRINFO pErrInfo = NULL)
+    RTCRestJsonPrimaryCursor(RTJSONVAL hValue, const char *pszName, PRTERRINFO pErrInfo = NULL) RT_NOEXCEPT
         : m_Cursor(hValue, pszName)
         , m_pErrInfo(pErrInfo)
@@ -115,5 +115,5 @@
      * @param   ...             Format string arguments.
      */
-    virtual int addError(RTCRestJsonCursor const &a_rCursor, int a_rc, const char *a_pszFormat, ...);
+    virtual int addError(RTCRestJsonCursor const &a_rCursor, int a_rc, const char *a_pszFormat, ...) RT_NOEXCEPT;
 
     /**
@@ -123,5 +123,5 @@
      * @param   a_rCursor       The cursor for the field.
      */
-    virtual int unknownField(RTCRestJsonCursor const &a_rCursor);
+    virtual int unknownField(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT;
 
     /**
@@ -133,5 +133,5 @@
      * @param   a_cbDst         Size of the destination buffer.
      */
-    virtual char *getPath(RTCRestJsonCursor const &a_rCursor, char *a_pszDst, size_t a_cbDst) const;
+    virtual char *getPath(RTCRestJsonCursor const &a_rCursor, char *a_pszDst, size_t a_cbDst) const RT_NOEXCEPT;
 };
 
@@ -146,6 +146,6 @@
 {
 public:
-    RTCRestObjectBase();
-    RTCRestObjectBase(RTCRestObjectBase const &a_rThat);
+    RTCRestObjectBase() RT_NOEXCEPT;
+    RTCRestObjectBase(RTCRestObjectBase const &a_rThat) RT_NOEXCEPT;
     virtual ~RTCRestObjectBase();
 
@@ -155,5 +155,5 @@
      * @returns Pointer to copy.
      */
-    virtual RTCRestObjectBase *baseClone() const = 0;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT = 0;
 
     /**
@@ -161,5 +161,5 @@
      * @returns true if null, false if not.
      */
-    inline bool isNull(void) const { return m_fNullIndicator; };
+    inline bool isNull(void) const RT_NOEXCEPT { return m_fNullIndicator; };
 
     /**
@@ -167,5 +167,5 @@
      * @returns IPRT status code (from resetToDefault).
      */
-    virtual int setNull(void);
+    virtual int setNull(void) RT_NOEXCEPT;
 
     /**
@@ -173,5 +173,5 @@
      * @remarks Only really important for strings.
      */
-    virtual void setNotNull(void);
+    virtual void setNotNull(void) RT_NOEXCEPT;
 
     /**
@@ -179,5 +179,5 @@
      * @returns IPRT status code.
      */
-    virtual int resetToDefault() = 0;
+    virtual int resetToDefault() RT_NOEXCEPT = 0;
 
     /**
@@ -187,5 +187,5 @@
      * @param   a_rDst      The destination for the serialization.
      */
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const = 0;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT = 0;
 
     /**
@@ -195,5 +195,5 @@
      * @param   a_rCursor    The JSON cursor.
      */
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) = 0;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT = 0;
 
     /**
@@ -242,5 +242,5 @@
      * @param   a_fFlags    kCollectionFormat_xxx.
      */
-    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const;
+    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_NOEXCEPT;
 
     /**
@@ -263,5 +263,5 @@
      */
     virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-                           uint32_t a_fFlags = kCollectionFormat_Unspecified);
+                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT;
 
     /** Type classification */
@@ -288,10 +288,10 @@
      * Returns the object type class.
      */
-    virtual kTypeClass typeClass(void) const = 0;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT = 0;
 
     /**
      * Returns the object type name.
      */
-    virtual const char *typeName(void) const = 0;
+    virtual const char *typeName(void) const RT_NOEXCEPT = 0;
 
 protected:
@@ -314,35 +314,35 @@
 public:
     /** Default constructor. */
-    RTCRestBool();
+    RTCRestBool() RT_NOEXCEPT;
     /** Copy constructor. */
-    RTCRestBool(RTCRestBool const &a_rThat);
+    RTCRestBool(RTCRestBool const &a_rThat) RT_NOEXCEPT;
     /** From value constructor. */
-    RTCRestBool(bool fValue);
+    RTCRestBool(bool fValue) RT_NOEXCEPT;
     /** Destructor. */
     virtual ~RTCRestBool();
     /** Copy assignment operator. */
-    RTCRestBool &operator=(RTCRestBool const &a_rThat);
-    /** Safe copy assignment method. */
-    int assignCopy(RTCRestBool const &a_rThat);
+    RTCRestBool &operator=(RTCRestBool const &a_rThat) RT_NOEXCEPT;
+    /** Safe copy assignment method. */
+    int assignCopy(RTCRestBool const &a_rThat) RT_NOEXCEPT;
     /** Assign value and clear null indicator. */
-    void assignValue(bool a_fValue);
+    void assignValue(bool a_fValue) RT_NOEXCEPT;
     /** Make a clone of this object. */
-    inline RTCRestBool *clone() const { return (RTCRestBool *)baseClone(); }
+    inline RTCRestBool *clone() const RT_NOEXCEPT { return (RTCRestBool *)baseClone(); }
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
-    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = 0) const RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = 0) const RT_NOEXCEPT RT_OVERRIDE;
     virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void);
-    /** Deserialization w/ instantiation. */
-    static FNDESERIALIZEINSTANCEFROMJSON deserializeInstanceFromJson;
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT;
+    /** @copydoc RTCRestObjectBase::FNDESERIALIZEINSTANCEFROMJSON */
+    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT;
 
 public:
@@ -359,35 +359,35 @@
 public:
     /** Default constructor. */
-    RTCRestInt64();
+    RTCRestInt64() RT_NOEXCEPT;
     /** Copy constructor. */
-    RTCRestInt64(RTCRestInt64 const &a_rThat);
+    RTCRestInt64(RTCRestInt64 const &a_rThat) RT_NOEXCEPT;
     /** From value constructor. */
-    RTCRestInt64(int64_t a_iValue);
+    RTCRestInt64(int64_t a_iValue) RT_NOEXCEPT;
     /** Destructor. */
     virtual ~RTCRestInt64();
     /** Copy assignment operator. */
-    RTCRestInt64 &operator=(RTCRestInt64 const &a_rThat);
-    /** Safe copy assignment method. */
-    int assignCopy(RTCRestInt64 const &a_rThat);
+    RTCRestInt64 &operator=(RTCRestInt64 const &a_rThat) RT_NOEXCEPT;
+    /** Safe copy assignment method. */
+    int assignCopy(RTCRestInt64 const &a_rThat) RT_NOEXCEPT;
     /** Assign value and clear null indicator. */
-    void assignValue(int64_t a_iValue);
+    void assignValue(int64_t a_iValue) RT_NOEXCEPT;
     /** Make a clone of this object. */
-    inline RTCRestInt64 *clone() const { return (RTCRestInt64 *)baseClone(); }
+    inline RTCRestInt64 *clone() const RT_NOEXCEPT { return (RTCRestInt64 *)baseClone(); }
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
-    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = 0) const RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = 0) const RT_NOEXCEPT RT_OVERRIDE;
     virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void);
-    /** Deserialization w/ instantiation. */
-    static FNDESERIALIZEINSTANCEFROMJSON deserializeInstanceFromJson;
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT;
+    /** @copydoc RTCRestObjectBase::FNDESERIALIZEINSTANCEFROMJSON */
+    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT;
 
 public:
@@ -404,35 +404,35 @@
 public:
     /** Default constructor. */
-    RTCRestInt32();
+    RTCRestInt32() RT_NOEXCEPT;
     /** Copy constructor. */
-    RTCRestInt32(RTCRestInt32 const &a_rThat);
+    RTCRestInt32(RTCRestInt32 const &a_rThat) RT_NOEXCEPT;
     /** From value constructor. */
-    RTCRestInt32(int32_t iValue);
+    RTCRestInt32(int32_t iValue) RT_NOEXCEPT;
     /** Destructor. */
-    virtual ~RTCRestInt32();
+    virtual ~RTCRestInt32() RT_NOEXCEPT;
     /** Copy assignment operator. */
-    RTCRestInt32 &operator=(RTCRestInt32 const &a_rThat);
-    /** Safe copy assignment method. */
-    int assignCopy(RTCRestInt32 const &a_rThat);
+    RTCRestInt32 &operator=(RTCRestInt32 const &a_rThat) RT_NOEXCEPT;
+    /** Safe copy assignment method. */
+    int assignCopy(RTCRestInt32 const &a_rThat) RT_NOEXCEPT;
     /** Assign value and clear null indicator. */
-    void assignValue(int32_t a_iValue);
+    void assignValue(int32_t a_iValue) RT_NOEXCEPT;
     /** Make a clone of this object. */
     inline RTCRestInt32 *clone() const { return (RTCRestInt32 *)baseClone(); }
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
-    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = 0) const RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = 0) const RT_NOEXCEPT RT_OVERRIDE;
     virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void);
-    /** Deserialization w/ instantiation. */
-    static FNDESERIALIZEINSTANCEFROMJSON deserializeInstanceFromJson;
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT;
+    /** @copydoc RTCRestObjectBase::FNDESERIALIZEINSTANCEFROMJSON */
+    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT;
 
 public:
@@ -449,35 +449,35 @@
 public:
     /** Default constructor. */
-    RTCRestInt16();
+    RTCRestInt16() RT_NOEXCEPT;
     /** Copy constructor. */
-    RTCRestInt16(RTCRestInt16 const &a_rThat);
+    RTCRestInt16(RTCRestInt16 const &a_rThat) RT_NOEXCEPT;
     /** From value constructor. */
-    RTCRestInt16(int16_t iValue);
+    RTCRestInt16(int16_t iValue) RT_NOEXCEPT;
     /** Destructor. */
     virtual ~RTCRestInt16();
     /** Copy assignment operator. */
-    RTCRestInt16 &operator=(RTCRestInt16 const &a_rThat);
-    /** Safe copy assignment method. */
-    int assignCopy(RTCRestInt16 const &a_rThat);
+    RTCRestInt16 &operator=(RTCRestInt16 const &a_rThat) RT_NOEXCEPT;
+    /** Safe copy assignment method. */
+    int assignCopy(RTCRestInt16 const &a_rThat) RT_NOEXCEPT;
     /** Assign value and clear null indicator. */
-    void assignValue(int16_t a_iValue);
+    void assignValue(int16_t a_iValue) RT_NOEXCEPT;
     /** Make a clone of this object. */
-    inline RTCRestInt16 *clone() const { return (RTCRestInt16 *)baseClone(); }
+    inline RTCRestInt16 *clone() const RT_NOEXCEPT { return (RTCRestInt16 *)baseClone(); }
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
-    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = 0) const RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = 0) const RT_NOEXCEPT RT_OVERRIDE;
     virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void);
-    /** Deserialization w/ instantiation. */
-    static FNDESERIALIZEINSTANCEFROMJSON deserializeInstanceFromJson;
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT;
+    /** @copydoc RTCRestObjectBase::FNDESERIALIZEINSTANCEFROMJSON */
+    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT;
 
 public:
@@ -494,35 +494,35 @@
 public:
     /** Default constructor. */
-    RTCRestDouble();
+    RTCRestDouble() RT_NOEXCEPT;
     /** Copy constructor. */
-    RTCRestDouble(RTCRestDouble const &a_rThat);
+    RTCRestDouble(RTCRestDouble const &a_rThat) RT_NOEXCEPT;
     /** From value constructor. */
-    RTCRestDouble(double rdValue);
+    RTCRestDouble(double rdValue) RT_NOEXCEPT;
     /** Destructor. */
     virtual ~RTCRestDouble();
     /** Copy assignment operator. */
-    RTCRestDouble &operator=(RTCRestDouble const &a_rThat);
-    /** Safe copy assignment method. */
-    int assignCopy(RTCRestDouble const &a_rThat);
+    RTCRestDouble &operator=(RTCRestDouble const &a_rThat) RT_NOEXCEPT;
+    /** Safe copy assignment method. */
+    int assignCopy(RTCRestDouble const &a_rThat) RT_NOEXCEPT;
     /** Assign value and clear null indicator. */
-    void assignValue(double a_rdValue);
+    void assignValue(double a_rdValue) RT_NOEXCEPT;
     /** Make a clone of this object. */
-    inline RTCRestDouble *clone() const { return (RTCRestDouble *)baseClone(); }
+    inline RTCRestDouble *clone() const RT_NOEXCEPT { return (RTCRestDouble *)baseClone(); }
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
-    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = 0) const RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = 0) const RT_NOEXCEPT RT_OVERRIDE;
     virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void);
-    /** Deserialization w/ instantiation. */
-    static FNDESERIALIZEINSTANCEFROMJSON deserializeInstanceFromJson;
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT;
+    /** @copydoc RTCRestObjectBase::FNDESERIALIZEINSTANCEFROMJSON */
+    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT;
 
 public:
@@ -539,5 +539,5 @@
 public:
     /** Default constructor. */
-    RTCRestString();
+    RTCRestString() RT_NOEXCEPT;
     /** Destructor. */
     virtual ~RTCRestString();
@@ -550,28 +550,28 @@
     RTCRestString(const char *a_pszSrc);
     /** Safe copy assignment method. */
-    int assignCopy(RTCRestString const &a_rThat);
-    /** Safe copy assignment method. */
-    int assignCopy(RTCString const &a_rThat);
-    /** Safe copy assignment method. */
-    int assignCopy(const char *a_pszThat);
+    int assignCopy(RTCRestString const &a_rThat) RT_NOEXCEPT;
+    /** Safe copy assignment method. */
+    int assignCopy(RTCString const &a_rThat) RT_NOEXCEPT;
+    /** Safe copy assignment method. */
+    int assignCopy(const char *a_pszThat) RT_NOEXCEPT;
     /** Make a clone of this object. */
-    inline RTCRestString *clone() const { return (RTCRestString *)baseClone(); }
+    inline RTCRestString *clone() const RT_NOEXCEPT { return (RTCRestString *)baseClone(); }
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int setNull(void) RT_OVERRIDE; /* (ambigious, so overrider it to make sure.) */
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
-    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int setNull(void) RT_NOEXCEPT RT_OVERRIDE; /* (ambigious, so overrider it to make sure.) */
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_NOEXCEPT RT_OVERRIDE;
     virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void);
-    /** Deserialization w/ instantiation. */
-    static FNDESERIALIZEINSTANCEFROMJSON deserializeInstanceFromJson;
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT;
+    /** @copydoc RTCRestObjectBase::FNDESERIALIZEINSTANCEFROMJSON */
+    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT;
 
     /** @name RTCString assignment methods we need to replace to manage the null indicator
@@ -615,5 +615,5 @@
     /** Default constructor.
      * @note The result is a null-object.   */
-    RTCRestDate();
+    RTCRestDate() RT_NOEXCEPT;
     /** Copy constructor. */
     RTCRestDate(RTCRestDate const &a_rThat);
@@ -623,23 +623,23 @@
     RTCRestDate &operator=(RTCRestDate const &a_rThat);
     /** Safe copy assignment method. */
-    int assignCopy(RTCRestDate const &a_rThat);
+    int assignCopy(RTCRestDate const &a_rThat) RT_NOEXCEPT;
     /** Make a clone of this object. */
-    inline RTCRestDate *clone() const { return (RTCRestDate *)baseClone(); }
+    inline RTCRestDate *clone() const  RT_NOEXCEPT{ return (RTCRestDate *)baseClone(); }
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
-    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = 0) const RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = 0) const RT_NOEXCEPT RT_OVERRIDE;
     virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void);
-    /** Deserialization w/ instantiation. */
-    static FNDESERIALIZEINSTANCEFROMJSON deserializeInstanceFromJson;
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT;
+    /** @copydoc RTCRestObjectBase::FNDESERIALIZEINSTANCEFROMJSON */
+    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT;
 
     /** Date formats. */
@@ -664,8 +664,8 @@
      * @param   a_enmFormat     The date format to use when formatting it.
      */
-    int assignValue(PCRTTIMESPEC a_pTimeSpec, kFormat a_enmFormat);
-    int assignValueRfc2822(PCRTTIMESPEC a_pTimeSpec); /**< Convenience method for email/whatnot. */
-    int assignValueRfc7131(PCRTTIMESPEC a_pTimeSpec); /**< Convenience method for HTTP date. */
-    int assignValueRfc3339(PCRTTIMESPEC a_pTimeSpec); /**< Convenience method for ISO-8601 timstamp. */
+    int assignValue(PCRTTIMESPEC a_pTimeSpec, kFormat a_enmFormat) RT_NOEXCEPT;
+    int assignValueRfc2822(PCRTTIMESPEC a_pTimeSpec) RT_NOEXCEPT; /**< Convenience method for email/whatnot. */
+    int assignValueRfc7131(PCRTTIMESPEC a_pTimeSpec) RT_NOEXCEPT; /**< Convenience method for HTTP date. */
+    int assignValueRfc3339(PCRTTIMESPEC a_pTimeSpec) RT_NOEXCEPT; /**< Convenience method for ISO-8601 timstamp. */
 
     /**
@@ -676,8 +676,8 @@
      * @param   a_enmFormat     The date format to use when formatting it.
      */
-    int assignNow(kFormat a_enmFormat);
-    int assignNowRfc2822(); /**< Convenience method for email/whatnot. */
-    int assignNowRfc7131(); /**< Convenience method for HTTP date. */
-    int assignNowRfc3339(); /**< Convenience method for ISO-8601 timstamp. */
+    int assignNow(kFormat a_enmFormat) RT_NOEXCEPT;
+    int assignNowRfc2822() RT_NOEXCEPT; /**< Convenience method for email/whatnot. */
+    int assignNowRfc7131() RT_NOEXCEPT; /**< Convenience method for HTTP date. */
+    int assignNowRfc3339() RT_NOEXCEPT; /**< Convenience method for ISO-8601 timstamp. */
 
     /**
@@ -688,25 +688,25 @@
      * @param   a_enmFormat     The date format to try/set.
      */
-    int setFormat(kFormat a_enmFormat);
+    int setFormat(kFormat a_enmFormat) RT_NOEXCEPT;
 
     /** Check if the value is okay (m_TimeSpec & m_Exploded). */
-    inline bool              isOkay() const             { return m_fTimeSpecOkay; }
+    inline bool              isOkay() const RT_NOEXCEPT         { return m_fTimeSpecOkay; }
     /** Get the timespec value. */
-    inline RTTIMESPEC const &getTimeSpec() const        { return m_TimeSpec; }
+    inline RTTIMESPEC const &getTimeSpec() const RT_NOEXCEPT    { return m_TimeSpec; }
     /** Get the exploded time. */
-    inline RTTIME const     &getExploded() const        { return m_Exploded; }
+    inline RTTIME const     &getExploded() const RT_NOEXCEPT    { return m_Exploded; }
     /** Gets the format. */
-    inline kFormat           getFormat() const          { return m_enmFormat; }
+    inline kFormat           getFormat() const RT_NOEXCEPT      { return m_enmFormat; }
     /** Get the formatted/raw string value. */
-    inline RTCString const  &getString() const          { return m_strFormatted; }
+    inline RTCString const  &getString() const RT_NOEXCEPT      { return m_strFormatted; }
 
     /** Get nanoseconds since unix epoch. */
-    inline int64_t           getEpochNano() const       { return RTTimeSpecGetNano(&m_TimeSpec); }
+    inline int64_t           getEpochNano() const RT_NOEXCEPT   { return RTTimeSpecGetNano(&m_TimeSpec); }
     /** Get seconds since unix epoch. */
-    inline int64_t           getEpochSeconds() const    { return RTTimeSpecGetSeconds(&m_TimeSpec); }
+    inline int64_t           getEpochSeconds() const RT_NOEXCEPT { return RTTimeSpecGetSeconds(&m_TimeSpec); }
     /** Checks if UTC time. */
-    inline bool              isUtc() const              { return (m_Exploded.fFlags & RTTIME_FLAGS_TYPE_MASK) != RTTIME_FLAGS_TYPE_LOCAL; }
+    inline bool              isUtc() const RT_NOEXCEPT { return (m_Exploded.fFlags & RTTIME_FLAGS_TYPE_MASK) != RTTIME_FLAGS_TYPE_LOCAL; }
     /** Checks if local time. */
-    inline bool              isLocal() const            { return (m_Exploded.fFlags & RTTIME_FLAGS_TYPE_MASK) == RTTIME_FLAGS_TYPE_LOCAL; }
+    inline bool              isLocal() const RT_NOEXCEPT { return (m_Exploded.fFlags & RTTIME_FLAGS_TYPE_MASK) == RTTIME_FLAGS_TYPE_LOCAL; }
 
 protected:
@@ -732,5 +732,5 @@
      * @param   a_enmFormat The format to use.
      */
-    int explodeAndFormat(kFormat a_enmFormat);
+    int explodeAndFormat(kFormat a_enmFormat) RT_NOEXCEPT;
 
     /**
@@ -742,5 +742,5 @@
      * @param   a_enmFormat The format to use.
      */
-    int format(kFormat a_enmFormat);
+    int format(kFormat a_enmFormat) RT_NOEXCEPT;
 
     /**
@@ -752,5 +752,5 @@
      * @param   enmFormat   Specific format to try, kFormat_Invalid (default) to try guess it.
      */
-    int decodeFormattedString(kFormat enmFormat = kFormat_Invalid);
+    int decodeFormattedString(kFormat enmFormat = kFormat_Invalid) RT_NOEXCEPT;
 };
 
@@ -775,5 +775,5 @@
 
     /** Default constructor. */
-    RTCRestStringEnumBase();
+    RTCRestStringEnumBase() RT_NOEXCEPT;
     /** Destructor. */
     virtual ~RTCRestStringEnumBase();
@@ -785,18 +785,18 @@
 
     /** Safe copy assignment method. */
-    int assignCopy(RTCRestStringEnumBase const &a_rThat);
-    /** Safe copy assignment method. */
-    inline int assignCopy(RTCString const &a_rThat)    { return setByString(a_rThat); }
-    /** Safe copy assignment method. */
-    inline int assignCopy(const char *a_pszThat)       { return setByString(a_pszThat); }
+    int assignCopy(RTCRestStringEnumBase const &a_rThat) RT_NOEXCEPT;
+    /** Safe copy assignment method. */
+    inline int assignCopy(RTCString const &a_rThat) RT_NOEXCEPT    { return setByString(a_rThat); }
+    /** Safe copy assignment method. */
+    inline int assignCopy(const char *a_pszThat) RT_NOEXCEPT       { return setByString(a_pszThat); }
 
     /* Overridden methods: */
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
-    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_NOEXCEPT RT_OVERRIDE;
     virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
+                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /**
@@ -809,5 +809,5 @@
      * @param   a_cchValue      The string value length.  Optional.
      */
-    int setByString(const char *a_pszValue, size_t a_cchValue = RTSTR_MAX);
+    int setByString(const char *a_pszValue, size_t a_cchValue = RTSTR_MAX) RT_NOEXCEPT;
 
     /**
@@ -819,17 +819,17 @@
      * @param   a_rValue        The string value.
      */
-    int setByString(RTCString const &a_rValue);
+    int setByString(RTCString const &a_rValue) RT_NOEXCEPT;
 
     /**
      * Gets the string value.
      */
-    const char *getString() const;
+    const char *getString() const RT_NOEXCEPT;
 
     /** Maps the given string value to an enum. */
-    int stringToEnum(const char *a_pszValue, size_t a_cchValue = RTSTR_MAX);
+    int stringToEnum(const char *a_pszValue, size_t a_cchValue = RTSTR_MAX) RT_NOEXCEPT;
     /** Maps the given string value to an enum. */
-    int stringToEnum(RTCString const &a_rStrValue);
+    int stringToEnum(RTCString const &a_rStrValue) RT_NOEXCEPT;
     /** Maps the given string value to an enum. */
-    const char *enumToString(int a_iEnumValue, size_t *a_pcchString);
+    const char *enumToString(int a_iEnumValue, size_t *a_pcchString) RT_NOEXCEPT;
 
 
@@ -847,8 +847,8 @@
      * @param   a_iEnumValue    The enum value to set.
      */
-    bool                setWorker(int a_iEnumValue);
+    bool                setWorker(int a_iEnumValue) RT_NOEXCEPT;
 
     /** Helper for implementing RTCRestObjectBase::clone(). */
-    RTCRestObjectBase  *cloneWorker(RTCRestStringEnumBase *a_pDst) const;
+    RTCRestObjectBase  *cloneWorker(RTCRestStringEnumBase *a_pDst) const RT_NOEXCEPT;
 
     /**
@@ -858,5 +858,5 @@
      * @param   pcEntries   Where to return the translation table size.
      */
-    virtual ENUMMAPENTRY const *getMappingTable(size_t *pcEntries) const = 0;
+    virtual ENUMMAPENTRY const *getMappingTable(size_t *pcEntries) const RT_NOEXCEPT = 0;
 };
 
@@ -874,7 +874,7 @@
 
     /** Default constructor */
-    RTCRestStringEnum() : RTCRestStringEnumBase() { }
+    RTCRestStringEnum() RT_NOEXCEPT : RTCRestStringEnumBase() { }
     /** Constructor with initial enum value. */
-    RTCRestStringEnum(Type a_enmValue) : RTCRestStringEnumBase() { set(a_enmValue); }
+    RTCRestStringEnum(Type a_enmValue) RT_NOEXCEPT : RTCRestStringEnumBase() { set(a_enmValue); }
     /** Constructor with string default. */
     RTCRestStringEnum(const char *a_pszDefault) : RTCRestStringEnumBase() { setByString(a_pszDefault); }
@@ -882,7 +882,10 @@
     RTCRestStringEnum(RTCRestStringEnum const &a_rThat) : RTCRestStringEnumBase(a_rThat) { }
     /** Make a clone of this object. */
-    inline RTCRestStringEnum *clone() const { return (RTCRestStringEnum *)baseClone(); }
-
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE { return cloneWorker(new (std::nothrow) RTCRestStringEnum()); }
+    inline RTCRestStringEnum *clone() const RT_NOEXCEPT { return (RTCRestStringEnum *)baseClone(); }
+
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE
+    {
+        return cloneWorker(new (std::nothrow) RTCRestStringEnum());
+    }
 
     /**
@@ -892,5 +895,5 @@
      *          no value has been assigned yet.
      */
-    Type get() const { return (Type)m_iEnumValue; }
+    Type get() const RT_NOEXCEPT { return (Type)m_iEnumValue; }
 
     /**
@@ -900,10 +903,10 @@
      * @param   a_enmType   The new value.
      */
-    bool set(Type a_enmType) { return setWorker((int)a_enmType); }
-
-    virtual const char *typeName(void) const RT_OVERRIDE { return "RTCRestStringEnum<EnumType>"; }
+    bool set(Type a_enmType) RT_NOEXCEPT { return setWorker((int)a_enmType); }
+
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE { return "RTCRestStringEnum<EnumType>"; }
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void)
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT
     {
         return new (std::nothrow) RTCRestStringEnum();
@@ -911,5 +914,5 @@
 
     /** @copydoc RTCRestObjectBase::FNDESERIALIZEINSTANCEFROMJSON */
-    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance)
+    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT
     {
         *a_ppInstance = new (std::nothrow) RTCRestStringEnum();
@@ -925,5 +928,5 @@
     static const size_t       s_cMappingTable;
 
-    virtual ENUMMAPENTRY const *getMappingTable(size_t *pcEntries) const RT_OVERRIDE
+    virtual ENUMMAPENTRY const *getMappingTable(size_t *pcEntries) const RT_NOEXCEPT RT_OVERRIDE
     {
         *pcEntries = s_cMappingTable;
@@ -943,44 +946,44 @@
 public:
     /** Default constructor. */
-    RTCRestBinary();
+    RTCRestBinary() RT_NOEXCEPT;
     /** Destructor. */
     virtual ~RTCRestBinary();
 
     /** Safe copy assignment method. */
-    virtual int assignCopy(RTCRestBinary const &a_rThat);
+    virtual int assignCopy(RTCRestBinary const &a_rThat) RT_NOEXCEPT;
     /** Safe buffer copy method. */
-    virtual int assignCopy(void const *a_pvData, size_t a_cbData);
+    virtual int assignCopy(void const *a_pvData, size_t a_cbData) RT_NOEXCEPT;
 
     /** Use the specified data buffer directly. */
-    virtual int assignReadOnly(void const *a_pvData, size_t a_cbData);
+    virtual int assignReadOnly(void const *a_pvData, size_t a_cbData) RT_NOEXCEPT;
     /** Use the specified data buffer directly. */
-    virtual int assignWriteable(void *a_pvBuf, size_t a_cbBuf);
+    virtual int assignWriteable(void *a_pvBuf, size_t a_cbBuf) RT_NOEXCEPT;
     /** Frees the data held by the object and resets it default state. */
-    virtual void freeData();
+    virtual void freeData() RT_NOEXCEPT;
 
     /** Returns a pointer to the data blob. */
-    inline const uint8_t  *getPtr()  const { return m_pbData; }
+    inline const uint8_t  *getPtr()  const RT_NOEXCEPT { return m_pbData; }
     /** Gets the size of the data. */
-    inline size_t          getSize() const { return m_cbData; }
+    inline size_t          getSize() const RT_NOEXCEPT { return m_cbData; }
 
     /** Make a clone of this object. */
-    inline RTCRestBinary  *clone() const { return (RTCRestBinary *)baseClone(); }
+    inline RTCRestBinary  *clone() const RT_NOEXCEPT { return (RTCRestBinary *)baseClone(); }
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int setNull(void) RT_OVERRIDE;
-    virtual int resetToDefault(void) RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
-    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int setNull(void) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int resetToDefault(void) RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
+    virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_NOEXCEPT RT_OVERRIDE;
     virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+                           uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void);
-    /** Deserialization w/ instantiation. */
-    static FNDESERIALIZEINSTANCEFROMJSON deserializeInstanceFromJson;
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT;
+    /** @copydoc RTCRestObjectBase::FNDESERIALIZEINSTANCEFROMJSON */
+    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT;
 
 protected:
@@ -1009,13 +1012,13 @@
 {
 public:
-    RTCRestDataObject();
-    RTCRestDataObject(RTCRestDataObject const &a_rThat);
+    RTCRestDataObject() RT_NOEXCEPT;
+    RTCRestDataObject(RTCRestDataObject const &a_rThat) RT_NOEXCEPT;
     virtual ~RTCRestDataObject();
 
     /* Overridden methods:*/
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /**
@@ -1025,5 +1028,5 @@
      * @param   a_rDst      The destination for the serialization.
      */
-    virtual RTCRestOutputBase &serializeMembersAsJson(RTCRestOutputBase &a_rDst) const;
+    virtual RTCRestOutputBase &serializeMembersAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT;
 
     /**
@@ -1037,5 +1040,5 @@
      * @param   a_cchName   The length of a_rCursor.m_pszName.
      */
-    virtual int deserializeMemberFromJson(RTCRestJsonCursor const &a_rCursor, size_t a_cchName);
+    virtual int deserializeMemberFromJson(RTCRestJsonCursor const &a_rCursor, size_t a_cchName) RT_NOEXCEPT;
 
 protected:
@@ -1044,8 +1047,8 @@
 
     /** Copy assignment operator. */
-    RTCRestDataObject &operator=(RTCRestDataObject const &a_rThat);
-
-    /** Safe copy assignment method. */
-    virtual int assignCopy(RTCRestDataObject const &a_rThat);
+    RTCRestDataObject &operator=(RTCRestDataObject const &a_rThat) RT_NOEXCEPT;
+
+    /** Safe copy assignment method. */
+    virtual int assignCopy(RTCRestDataObject const &a_rThat) RT_NOEXCEPT;
 };
 
@@ -1057,18 +1060,18 @@
 {
 public:
-    RTCRestPolyDataObject();
-    RTCRestPolyDataObject(RTCRestPolyDataObject const &a_rThat);
+    RTCRestPolyDataObject() RT_NOEXCEPT;
+    RTCRestPolyDataObject(RTCRestPolyDataObject const &a_rThat) RT_NOEXCEPT;
     virtual ~RTCRestPolyDataObject();
 
     /* Overridden methods:*/
-    virtual int resetToDefault() RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
 
     /** Checks if the instance is of a child class (@c true) or of the parent (@c false). */
-    virtual bool isChild() const;
+    virtual bool isChild() const RT_NOEXCEPT;
 
 protected:
 
     /** Copy assignment operator. */
-    RTCRestPolyDataObject &operator=(RTCRestPolyDataObject const &a_rThat);
+    RTCRestPolyDataObject &operator=(RTCRestPolyDataObject const &a_rThat) RT_NOEXCEPT;
 };
 
Index: trunk/include/iprt/cpp/restclient.h
===================================================================
--- trunk/include/iprt/cpp/restclient.h	(revision 74415)
+++ trunk/include/iprt/cpp/restclient.h	(revision 74425)
@@ -46,39 +46,39 @@
 public:
     /** Default constructor. */
-    RTCRestBinaryParameter();
+    RTCRestBinaryParameter() RT_NOEXCEPT;
 
     /** Safe copy assignment method. */
-    virtual int assignCopy(RTCRestBinaryParameter const &a_rThat);
+    virtual int assignCopy(RTCRestBinaryParameter const &a_rThat) RT_NOEXCEPT;
     /** Safe copy assignment method.
       * @note Resets callbacks and ASSUMES that @a a_cbData is the content length. */
-    virtual int assignCopy(RTCRestBinary const &a_rThat) RT_OVERRIDE;
+    virtual int assignCopy(RTCRestBinary const &a_rThat) RT_NOEXCEPT RT_OVERRIDE;
     /** Safe copy assignment method.
      * @note Resets callbacks and ASSUMES that @a a_cbData is the content length. */
-    virtual int assignCopy(void const *a_pvData, size_t a_cbData) RT_OVERRIDE;
+    virtual int assignCopy(void const *a_pvData, size_t a_cbData) RT_NOEXCEPT RT_OVERRIDE;
 
     /**
      * Use the specified data buffer directly.
      * @note Resets callbacks and ASSUMES that @a a_cbData is the content length. */
-    virtual int assignReadOnly(void const *a_pvData, size_t a_cbData) RT_OVERRIDE;
+    virtual int assignReadOnly(void const *a_pvData, size_t a_cbData) RT_NOEXCEPT RT_OVERRIDE;
     /**
      * Use the specified data buffer directly.
      * @note This will assert and work like assignReadOnly. */
-    virtual int assignWriteable(void *a_pvBuf, size_t a_cbBuf) RT_OVERRIDE;
+    virtual int assignWriteable(void *a_pvBuf, size_t a_cbBuf) RT_NOEXCEPT RT_OVERRIDE;
 
     /** Make a clone of this object. */
-    inline RTCRestBinaryParameter *clone() const { return (RTCRestBinaryParameter *)baseClone(); }
+    inline RTCRestBinaryParameter *clone() const RT_NOEXCEPT { return (RTCRestBinaryParameter *)baseClone(); }
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void);
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT;
 
     /**
      * Retrieves the callback data.
      */
-    inline void *getCallbackData() const  { return m_pvCallbackData; }
+    inline void *getCallbackData() const RT_NOEXCEPT  { return m_pvCallbackData; }
 
     /**
@@ -89,15 +89,15 @@
      *                              If NULL, no content type is set.
      */
-    int setContentType(const char *a_pszContentType);
+    int setContentType(const char *a_pszContentType) RT_NOEXCEPT;
 
     /**
      * Gets the content type that was set.
      */
-    inline RTCString const &getContentType() const { return m_strContentType; }
+    inline RTCString const &getContentType() const RT_NOEXCEPT { return m_strContentType; }
 
     /**
      * Gets the content-length value (UINT64_MAX if not available).
      */
-    inline uint64_t getContentLength() const { return m_cbContentLength; }
+    inline uint64_t getContentLength() const RT_NOEXCEPT { return m_cbContentLength; }
 
     /**
@@ -118,5 +118,5 @@
      */
     typedef DECLCALLBACK(int) FNPRODUCER(RTCRestBinaryParameter *a_pThis, void *a_pvDst, size_t a_cbDst,
-                                         uint64_t a_offContent, size_t *a_pcbActual);
+                                         uint64_t a_offContent, size_t *a_pcbActual) /*RT_NOEXCEPT*/;
     /** Pointer to a byte producer callback. */
     typedef FNPRODUCER *PFNPRODUCER;
@@ -134,5 +134,5 @@
      * @note    This will drop any buffer previously registered using setUploadData().
      */
-    void setProducerCallback(PFNPRODUCER a_pfnProducer, void *a_pvCallbackData = NULL, uint64_t a_cbContentLength = UINT64_MAX);
+    void setProducerCallback(PFNPRODUCER a_pfnProducer, void *a_pvCallbackData = NULL, uint64_t a_cbContentLength = UINT64_MAX) RT_NOEXCEPT;
 
     /**
@@ -143,5 +143,5 @@
      * @internal
      */
-    virtual int xmitPrepare(RTHTTP a_hHttp) const;
+    virtual int xmitPrepare(RTHTTP a_hHttp) const RT_NOEXCEPT;
 
     /**
@@ -151,5 +151,5 @@
      * @internal
      */
-    virtual void xmitComplete(RTHTTP a_hHttp) const;
+    virtual void xmitComplete(RTHTTP a_hHttp) const RT_NOEXCEPT;
 
 protected:
@@ -164,6 +164,7 @@
     void       *m_pvCallbackData;
 
-    /** Callback for use with RTHttpSetUploadCallback. */
-    static FNRTHTTPUPLOADCALLBACK   xmitHttpCallback;
+    /** @copydoc FNRTHTTPUPLOADCALLBACK */
+    static DECLCALLBACK(int) xmitHttpCallback(RTHTTP hHttp, void *pvBuf, size_t cbBuf, uint64_t offContent,
+                                              size_t *pcbActual, void *pvUser) RT_NOEXCEPT;
 
 private:
@@ -183,13 +184,13 @@
 public:
     /** Default constructor. */
-    RTCRestBinaryResponse();
+    RTCRestBinaryResponse() RT_NOEXCEPT;
 
     /** Safe copy assignment method. */
-    virtual int assignCopy(RTCRestBinaryResponse const &a_rThat);
+    virtual int assignCopy(RTCRestBinaryResponse const &a_rThat) RT_NOEXCEPT;
     /** Safe copy assignment method. */
-    virtual int assignCopy(RTCRestBinary const &a_rThat) RT_OVERRIDE;
+    virtual int assignCopy(RTCRestBinary const &a_rThat) RT_NOEXCEPT RT_OVERRIDE;
     /** Safe copy assignment method.
      * @note This will assert and fail as it makes no sense for a download.  */
-    virtual int assignCopy(void const *a_pvData, size_t a_cbData) RT_OVERRIDE;
+    virtual int assignCopy(void const *a_pvData, size_t a_cbData) RT_NOEXCEPT RT_OVERRIDE;
 
     /**
@@ -197,26 +198,26 @@
      * @note This will assert and fail as it makes no sense for a download.
      */
-    virtual int assignReadOnly(void const *a_pvData, size_t a_cbData) RT_OVERRIDE;
+    virtual int assignReadOnly(void const *a_pvData, size_t a_cbData) RT_NOEXCEPT RT_OVERRIDE;
     /**
      * Use the specified data buffer directly.
      * @note This will drop any previously registered producer callback and user data.
      */
-    virtual int assignWriteable(void *a_pvBuf, size_t a_cbBuf) RT_OVERRIDE;
+    virtual int assignWriteable(void *a_pvBuf, size_t a_cbBuf) RT_NOEXCEPT RT_OVERRIDE;
 
     /** Make a clone of this object. */
-    inline RTCRestBinaryResponse *clone() const { return (RTCRestBinaryResponse *)baseClone(); }
+    inline RTCRestBinaryResponse *clone() const RT_NOEXCEPT { return (RTCRestBinaryResponse *)baseClone(); }
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void);
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT;
 
     /**
      * Retrieves the callback data.
      */
-    inline void *getCallbackData() const  { return m_pvCallbackData; }
+    inline void *getCallbackData() const RT_NOEXCEPT { return m_pvCallbackData; }
 
     /**
@@ -230,10 +231,10 @@
      *                          32-bit hosts and 128MiB for 64-bit).
      */
-    void setMaxDownloadSize(size_t a_cbMaxDownload);
+    void setMaxDownloadSize(size_t a_cbMaxDownload) RT_NOEXCEPT;
 
     /**
      * Gets the content-length value (UINT64_MAX if not available).
      */
-    inline uint64_t getContentLength() const { return m_cbContentLength; }
+    inline uint64_t getContentLength() const RT_NOEXCEPT { return m_cbContentLength; }
 
     /**
@@ -255,5 +256,5 @@
      */
     typedef DECLCALLBACK(int) FNCONSUMER(RTCRestBinaryResponse *a_pThis, const void *a_pvSrc, size_t a_cbSrc,
-                                         uint32_t a_uHttpStatus, uint64_t a_offContent, uint64_t a_cbContent);
+                                         uint32_t a_uHttpStatus, uint64_t a_offContent, uint64_t a_cbContent) /*RT_NOEXCEPT*/;
     /** Pointer to a byte consumer callback. */
     typedef FNCONSUMER *PFNCONSUMER;
@@ -267,5 +268,5 @@
      *                              using getCallbackData().
      */
-    void setConsumerCallback(PFNCONSUMER a_pfnConsumer, void *a_pvCallbackData = NULL);
+    void setConsumerCallback(PFNCONSUMER a_pfnConsumer, void *a_pvCallbackData = NULL) RT_NOEXCEPT;
 
     /**
@@ -277,5 +278,5 @@
      * @internal
      */
-    virtual int receivePrepare(RTHTTP a_hHttp, uint32_t a_fCallbackFlags);
+    virtual int receivePrepare(RTHTTP a_hHttp, uint32_t a_fCallbackFlags) RT_NOEXCEPT;
 
     /**
@@ -285,5 +286,5 @@
      * @internal
      */
-    virtual void receiveComplete(RTHTTP a_hHttp);
+    virtual void receiveComplete(RTHTTP a_hHttp) RT_NOEXCEPT;
 
 protected:
@@ -300,6 +301,7 @@
     size_t      m_cbMaxDownload;
 
-    /** Callback for use with RTHttpSetDownloadCallback. */
-    static FNRTHTTPDOWNLOADCALLBACK receiveHttpCallback;
+    /** @copydoc FNRTHTTPDOWNLOADCALLBACK. */
+    static DECLCALLBACK(int) receiveHttpCallback(RTHTTP hHttp, void const *pvBuf, size_t cbBuf, uint32_t uHttpStatus,
+                                                 uint64_t offContent, uint64_t cbContent, void *pvUser) RT_NOEXCEPT;
 
 private:
@@ -331,8 +333,8 @@
 {
 public:
-    RTCRestClientRequestBase();
+    RTCRestClientRequestBase() RT_NOEXCEPT;
     virtual ~RTCRestClientRequestBase();
-    RTCRestClientRequestBase(RTCRestClientRequestBase const &a_rThat);
-    RTCRestClientRequestBase &operator=(RTCRestClientRequestBase const &a_rThat);
+    RTCRestClientRequestBase(RTCRestClientRequestBase const &a_rThat) RT_NOEXCEPT;
+    RTCRestClientRequestBase &operator=(RTCRestClientRequestBase const &a_rThat) RT_NOEXCEPT;
 
     /**
@@ -340,5 +342,5 @@
      * @returns IPRT status code.
      */
-    virtual int resetToDefault() = 0;
+    virtual int resetToDefault() RT_NOEXCEPT = 0;
 
     /**
@@ -351,5 +353,5 @@
      * @param   a_pStrBody  Where to set body parameters.
      */
-    virtual int xmitPrepare(RTCString *a_pStrPath, RTCString *a_pStrQuery, RTHTTP a_hHttp, RTCString *a_pStrBody) const = 0;
+    virtual int xmitPrepare(RTCString *a_pStrPath, RTCString *a_pStrQuery, RTHTTP a_hHttp, RTCString *a_pStrBody) const RT_NOEXCEPT = 0;
 
     /**
@@ -359,10 +361,10 @@
      * @param   a_hHttp     The HTTP handle the request was performed on.
      */
-    virtual void xmitComplete(int a_rcStatus, RTHTTP a_hHttp) const = 0;
+    virtual void xmitComplete(int a_rcStatus, RTHTTP a_hHttp) const RT_NOEXCEPT = 0;
 
     /**
      * Checks if there are were any assignment errors.
      */
-    inline bool hasAssignmentErrors() const { return m_fErrorSet != 0; }
+    inline bool hasAssignmentErrors() const RT_NOEXCEPT { return m_fErrorSet != 0; }
 
 protected:
@@ -400,5 +402,5 @@
      */
     int doPathParameters(RTCString *a_pStrPath, const char *a_pszPathTemplate, size_t a_cchPathTemplate,
-                         PATHPARAMDESC const *a_paPathParams, PATHPARAMSTATE *a_paPathParamStates, size_t a_cPathParams) const;
+                         PATHPARAMDESC const *a_paPathParams, PATHPARAMSTATE *a_paPathParamStates, size_t a_cPathParams) const RT_NOEXCEPT;
 
     /** Query parameter descriptor. */
@@ -421,5 +423,5 @@
      */
     int doQueryParameters(RTCString *a_pStrQuery, QUERYPARAMDESC const *a_paQueryParams,
-                          RTCRestObjectBase const **a_papQueryParamObjs, size_t a_cQueryParams) const;
+                          RTCRestObjectBase const **a_papQueryParamObjs, size_t a_cQueryParams) const RT_NOEXCEPT;
 
     /** Header parameter descriptor. */
@@ -443,5 +445,5 @@
      */
     int doHeaderParameters(RTHTTP a_hHttp, HEADERPARAMDESC const *a_paHeaderParams,
-                           RTCRestObjectBase const **a_papHeaderParamObjs, size_t a_cHeaderParams) const;
+                           RTCRestObjectBase const **a_papHeaderParamObjs, size_t a_cHeaderParams) const RT_NOEXCEPT;
 };
 
@@ -454,5 +456,5 @@
 public:
     /** Default constructor. */
-    RTCRestClientResponseBase();
+    RTCRestClientResponseBase() RT_NOEXCEPT;
     /** Destructor. */
     virtual ~RTCRestClientResponseBase();
@@ -465,5 +467,5 @@
      * Resets the object state.
      */
-    virtual void reset(void);
+    virtual void reset(void) RT_NOEXCEPT;
 
     /**
@@ -477,5 +479,5 @@
      * @param   a_hHttp     The HTTP handle to prepare for receiving.
      */
-    virtual int receivePrepare(RTHTTP a_hHttp);
+    virtual int receivePrepare(RTHTTP a_hHttp) RT_NOEXCEPT;
 
     /**
@@ -489,5 +491,5 @@
      * @note    Called before consumeBody() but after consumeHeader().
      */
-    virtual void receiveComplete(int a_rcStatus, RTHTTP a_hHttp);
+    virtual void receiveComplete(int a_rcStatus, RTHTTP a_hHttp) RT_NOEXCEPT;
 
     /**
@@ -499,5 +501,5 @@
      * @note    Called after consumeHeader().
      */
-    virtual void consumeBody(const char *a_pchData, size_t a_cbData);
+    virtual void consumeBody(const char *a_pchData, size_t a_cbData) RT_NOEXCEPT;
 
     /**
@@ -506,5 +508,5 @@
      * @returns IPRT status code.
      */
-    virtual void receiveFinal();
+    virtual void receiveFinal() RT_NOEXCEPT;
 
     /**
@@ -512,5 +514,5 @@
      * @returns Negative numbers are IPRT errors, positive are HTTP status codes.
      */
-    inline int getStatus() { return m_rcStatus; }
+    inline int getStatus() const RT_NOEXCEPT { return m_rcStatus; }
 
     /**
@@ -518,15 +520,15 @@
      * @returns HTTP status code or VERR_NOT_AVAILABLE.
      */
-    inline int getHttpStatus() { return m_rcHttp; }
+    inline int getHttpStatus() const RT_NOEXCEPT { return m_rcHttp; }
 
     /**
      * Getter for m_pErrInfo.
      */
-    inline PCRTERRINFO getErrInfo(void) const { return m_pErrInfo; }
+    inline PCRTERRINFO getErrInfo(void) const RT_NOEXCEPT { return m_pErrInfo; }
 
     /**
      * Getter for m_strContentType.
      */
-    inline RTCString const &getContentType(void) const { return m_strContentType; }
+    inline RTCString const &getContentType(void) const RT_NOEXCEPT { return m_strContentType; }
 
 
@@ -541,7 +543,7 @@
     RTCString   m_strContentType;
 
-    PRTERRINFO  getErrInfoInternal(void);
-    void        deleteErrInfo(void);
-    void        copyErrInfo(PCRTERRINFO pErrInfo);
+    PRTERRINFO  getErrInfoInternal(void) RT_NOEXCEPT;
+    void        deleteErrInfo(void) RT_NOEXCEPT;
+    void        copyErrInfo(PCRTERRINFO pErrInfo) RT_NOEXCEPT;
 
     /**
@@ -556,5 +558,5 @@
      * @param   ...         Message arguments.
      */
-    int addError(int a_rc, const char *a_pszFormat, ...);
+    int addError(int a_rc, const char *a_pszFormat, ...) RT_NOEXCEPT;
 
     /**
@@ -570,5 +572,5 @@
      */
     int deserializeHeader(RTCRestObjectBase *a_pObj, const char *a_pchValue, size_t a_cchValue,
-                          uint32_t a_fFlags, const char *a_pszErrorTag);
+                          uint32_t a_fFlags, const char *a_pszErrorTag) RT_NOEXCEPT;
 
     /**
@@ -587,5 +589,5 @@
      */
     int deserializeHeaderIntoMap(RTCRestStringMapBase *a_pMap, const char *a_pchField, size_t a_cchField,
-                                 const char *a_pchValue, size_t a_cchValue, uint32_t a_fFlags, const char *a_pszErrorTag);
+                                 const char *a_pchValue, size_t a_cchValue, uint32_t a_fFlags, const char *a_pszErrorTag) RT_NOEXCEPT;
 
     /**
@@ -597,5 +599,5 @@
      * @param   a_pszBodyName   The name of the body parameter.
      */
-    void deserializeBody(const char *a_pchData, size_t a_cbData, const char *a_pszBodyName);
+    void deserializeBody(const char *a_pchData, size_t a_cbData, const char *a_pszBodyName) RT_NOEXCEPT;
 
     /**
@@ -604,5 +606,5 @@
      * @param   a_rCursor       The JSON cursor.
      */
-    virtual void deserializeBodyFromJsonCursor(RTCRestJsonCursor const &a_rCursor);
+    virtual void deserializeBodyFromJsonCursor(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT;
 
     /**
@@ -613,7 +615,7 @@
     public:
         RTCRestClientResponseBase *m_pThat; /**< Pointer to response object. */
-        PrimaryJsonCursorForBody(RTJSONVAL hValue, const char *pszName, RTCRestClientResponseBase *a_pThat);
-        virtual int addError(RTCRestJsonCursor const &a_rCursor, int a_rc, const char *a_pszFormat, ...) RT_OVERRIDE;
-        virtual int unknownField(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
+        PrimaryJsonCursorForBody(RTJSONVAL hValue, const char *pszName, RTCRestClientResponseBase *a_pThat) RT_NOEXCEPT;
+        virtual int addError(RTCRestJsonCursor const &a_rCursor, int a_rc, const char *a_pszFormat, ...) RT_NOEXCEPT RT_OVERRIDE;
+        virtual int unknownField(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
     };
 
@@ -634,9 +636,10 @@
      */
     virtual int consumeHeader(uint32_t a_uMatchWord, const char *a_pchField, size_t a_cchField,
-                              const char *a_pchValue, size_t a_cchValue);
+                              const char *a_pchValue, size_t a_cchValue) RT_NOEXCEPT;
 
 private:
     /** Callback for use with RTHttpSetHeaderCallback. */
-    static FNRTHTTPHEADERCALLBACK receiveHttpHeaderCallback;
+    static DECLCALLBACK(int) receiveHttpHeaderCallback(RTHTTP hHttp, uint32_t uMatchWord, const char *pchField, size_t cchField,
+                                                       const char *pchValue, size_t cchValue, void *pvUser) RT_NOEXCEPT;
 };
 
@@ -648,5 +651,5 @@
 {
 public:
-    RTCRestClientApiBase();
+    RTCRestClientApiBase() RT_NOEXCEPT;
     virtual ~RTCRestClientApiBase();
 
@@ -656,5 +659,5 @@
      * Gets the server URL.
      */
-    const char *getServerUrl(void) const;
+    const char *getServerUrl(void) const RT_NOEXCEPT;
 
     /**
@@ -663,5 +666,5 @@
      * @param   a_pszUrl        The new server URL.  NULL/empty to reset to default.
      */
-    int setServerUrl(const char *a_pszUrl);
+    int setServerUrl(const char *a_pszUrl) RT_NOEXCEPT;
 
     /**
@@ -670,5 +673,5 @@
      * @param   a_pszScheme     The new scheme.  Does not accept NULL or empty string.
      */
-    int setServerScheme(const char *a_pszScheme);
+    int setServerScheme(const char *a_pszScheme) RT_NOEXCEPT;
 
     /**
@@ -677,5 +680,5 @@
      * @param   a_pszAuthority  The new authority.  Does not accept NULL or empty string.
      */
-    int setServerAuthority(const char *a_pszAuthority);
+    int setServerAuthority(const char *a_pszAuthority) RT_NOEXCEPT;
 
     /**
@@ -684,5 +687,5 @@
      * @param   a_pszBasePath   The new base path.  Does not accept NULL or empty string.
      */
-    int setServerBasePath(const char *a_pszBasePath);
+    int setServerBasePath(const char *a_pszBasePath) RT_NOEXCEPT;
 
     /**
@@ -690,5 +693,5 @@
      * @returns Server URL.
      */
-    virtual const char *getDefaultServerUrl() const = 0;
+    virtual const char *getDefaultServerUrl() const RT_NOEXCEPT = 0;
 
     /**
@@ -696,5 +699,5 @@
      * @returns Host string (start of URL).
      */
-    virtual const char *getDefaultServerBasePath() const = 0;
+    virtual const char *getDefaultServerBasePath() const RT_NOEXCEPT = 0;
     /** @} */
 
@@ -720,5 +723,5 @@
      * @returns IPRT status code.
      */
-    virtual int reinitHttpInstance();
+    virtual int reinitHttpInstance() RT_NOEXCEPT;
 
     /**
@@ -735,5 +738,5 @@
      */
     virtual int xmitReady(RTHTTP a_hHttp, RTCString const &a_rStrFullUrl, RTHTTPMETHOD a_enmHttpMethod,
-                          RTCString const &a_rStrXmitBody, uint32_t a_fFlags);
+                          RTCString const &a_rStrXmitBody, uint32_t a_fFlags) RT_NOEXCEPT;
 
     /**
@@ -748,5 +751,5 @@
      */
     virtual int doCall(RTCRestClientRequestBase const &a_rRequest, RTHTTPMETHOD a_enmHttpMethod,
-                       RTCRestClientResponseBase *a_pResponse, const char *a_pszMethod, uint32_t a_fFlags);
+                       RTCRestClientResponseBase *a_pResponse, const char *a_pszMethod, uint32_t a_fFlags) RT_NOEXCEPT;
 
     /**
@@ -766,5 +769,5 @@
      */
     int ociSignRequest(RTHTTP a_hHttp, RTCString const &a_rStrFullUrl, RTHTTPMETHOD a_enmHttpMethod,
-                       RTCString const &a_rStrXmitBody, uint32_t a_fFlags, RTCRKEY a_hKey, RTCString const &a_rStrKeyId);
+                       RTCString const &a_rStrXmitBody, uint32_t a_fFlags, RTCRKEY a_hKey, RTCString const &a_rStrKeyId) RT_NOEXCEPT;
 
     /**
@@ -778,5 +781,5 @@
      * @param   a_cchSrc        The length of the new component.
      */
-    int setServerUrlPart(const char *a_pszServerUrl, size_t a_offDst, size_t a_cchDst, const char *a_pszSrc, size_t a_cchSrc);
+    int setServerUrlPart(const char *a_pszServerUrl, size_t a_offDst, size_t a_cchDst, const char *a_pszSrc, size_t a_cchSrc) RT_NOEXCEPT;
 };
 
Index: trunk/include/iprt/cpp/restoutput.h
===================================================================
--- trunk/include/iprt/cpp/restoutput.h	(revision 74415)
+++ trunk/include/iprt/cpp/restoutput.h	(revision 74425)
@@ -45,5 +45,5 @@
 {
 public:
-    RTCRestOutputBase();
+    RTCRestOutputBase() RT_NOEXCEPT;
     virtual ~RTCRestOutputBase();
 
@@ -55,5 +55,5 @@
      * @param   a_cchToWrite    The length of the string
      */
-    virtual size_t output(const char *a_pchString, size_t a_cchToWrite) = 0;
+    virtual size_t output(const char *a_pchString, size_t a_cchToWrite) RT_NOEXCEPT = 0;
 
     /**
@@ -64,5 +64,5 @@
      * @param   ...         Argument specfied in @a pszFormat.
      */
-    inline size_t printf(const char *pszFormat, ...) RT_IPRT_FORMAT_ATTR(2, 3)
+    inline size_t printf(const char *pszFormat, ...) RT_NOEXCEPT RT_IPRT_FORMAT_ATTR(2, 3)
     {
         va_list va;
@@ -80,5 +80,5 @@
      * @param   va          Argument specfied in @a pszFormat.
      */
-    size_t vprintf(const char *pszFormat, va_list va) RT_IPRT_FORMAT_ATTR(2, 0);
+    size_t vprintf(const char *pszFormat, va_list va) RT_NOEXCEPT RT_IPRT_FORMAT_ATTR(2, 0);
 
     /**
@@ -86,5 +86,5 @@
      * @returns Previous output state.  Pass to endArray() when done.
      */
-    virtual uint32_t beginArray();
+    virtual uint32_t beginArray() RT_NOEXCEPT;
 
     /**
@@ -92,5 +92,5 @@
      * @param   a_uOldState     Previous output state (returned by beginArray()).
      */
-    virtual void endArray(uint32_t a_uOldState);
+    virtual void endArray(uint32_t a_uOldState) RT_NOEXCEPT;
 
     /**
@@ -98,5 +98,5 @@
      * @returns Previous output state.  Pass to endObject() when done.
      */
-    virtual uint32_t beginObject();
+    virtual uint32_t beginObject() RT_NOEXCEPT;
 
     /**
@@ -104,5 +104,5 @@
      * @param   a_uOldState     Previous output state (returned by beginObject()).
      */
-    virtual void endObject(uint32_t a_uOldState);
+    virtual void endObject(uint32_t a_uOldState) RT_NOEXCEPT;
 
     /**
@@ -110,13 +110,13 @@
      * This is called before a value, not after.
      */
-    virtual void valueSeparator();
+    virtual void valueSeparator() RT_NOEXCEPT;
 
     /**
      * Outputs a value separator, name and name separator.
      */
-    virtual void valueSeparatorAndName(const char *a_pszName, size_t a_cchName);
+    virtual void valueSeparatorAndName(const char *a_pszName, size_t a_cchName) RT_NOEXCEPT;
 
     /** Outputs a null-value. */
-    void nullValue();
+    void nullValue() RT_NOEXCEPT;
 
 protected:
@@ -125,5 +125,5 @@
 
     /** @callback_method_impl{FNRTSTROUTPUT} */
-    static DECLCALLBACK(size_t) printfOutputCallback(void *pvArg, const char *pachChars, size_t cbChars);
+    static DECLCALLBACK(size_t) printfOutputCallback(void *pvArg, const char *pachChars, size_t cbChars) RT_NOEXCEPT;
 };
 
@@ -135,5 +135,5 @@
 {
 public:
-    RTCRestOutputPrettyBase();
+    RTCRestOutputPrettyBase() RT_NOEXCEPT;
     virtual ~RTCRestOutputPrettyBase();
 
@@ -142,5 +142,5 @@
      * @returns Previous output state.  Pass to endArray() when done.
      */
-    virtual uint32_t beginArray() RT_OVERRIDE;
+    virtual uint32_t beginArray() RT_NOEXCEPT RT_OVERRIDE;
 
     /**
@@ -148,5 +148,5 @@
      * @param   a_uOldState     Previous output state (returned by beginArray()).
      */
-    virtual void endArray(uint32_t a_uOldState) RT_OVERRIDE;
+    virtual void endArray(uint32_t a_uOldState) RT_NOEXCEPT RT_OVERRIDE;
 
     /**
@@ -154,5 +154,5 @@
      * @returns Previous output state.  Pass to endObject() when done.
      */
-    virtual uint32_t beginObject() RT_OVERRIDE;
+    virtual uint32_t beginObject() RT_NOEXCEPT RT_OVERRIDE;
 
     /**
@@ -160,5 +160,5 @@
      * @param   a_uOldState     Previous output state (returned by beginObject()).
      */
-    virtual void endObject(uint32_t a_uOldState) RT_OVERRIDE;
+    virtual void endObject(uint32_t a_uOldState) RT_NOEXCEPT RT_OVERRIDE;
 
     /**
@@ -166,14 +166,14 @@
      * This is called before a value, not after.
      */
-    virtual void valueSeparator() RT_OVERRIDE;
+    virtual void valueSeparator() RT_NOEXCEPT RT_OVERRIDE;
 
     /**
      * Outputs a value separator, name and name separator.
      */
-    virtual void valueSeparatorAndName(const char *a_pszName, size_t a_cchName) RT_OVERRIDE;
+    virtual void valueSeparatorAndName(const char *a_pszName, size_t a_cchName) RT_NOEXCEPT RT_OVERRIDE;
 
 protected:
     /** Helper for outputting the correct amount of indentation. */
-    void outputIndentation();
+    void outputIndentation() RT_NOEXCEPT;
 };
 
@@ -192,8 +192,8 @@
      *                      nuke the string content before starting the output.
      */
-    RTCRestOutputToString(RTCString *a_pDst, bool a_fAppend = false);
+    RTCRestOutputToString(RTCString *a_pDst, bool a_fAppend = false) RT_NOEXCEPT;
     virtual ~RTCRestOutputToString();
 
-    virtual size_t output(const char *a_pchString, size_t a_cchToWrite) RT_OVERRIDE;
+    virtual size_t output(const char *a_pchString, size_t a_cchToWrite) RT_NOEXCEPT RT_OVERRIDE;
 
     /**
@@ -206,5 +206,5 @@
      *          more output afterwards.
      */
-    virtual RTCString *finalize();
+    virtual RTCString *finalize() RT_NOEXCEPT;
 
 protected:
@@ -233,8 +233,8 @@
      *                      nuke the string content before starting the output.
      */
-    RTCRestOutputPrettyToString(RTCString *a_pDst, bool a_fAppend = false);
+    RTCRestOutputPrettyToString(RTCString *a_pDst, bool a_fAppend = false) RT_NOEXCEPT;
     virtual ~RTCRestOutputPrettyToString();
 
-    virtual size_t output(const char *a_pchString, size_t a_cchToWrite) RT_OVERRIDE;
+    virtual size_t output(const char *a_pchString, size_t a_cchToWrite) RT_NOEXCEPT RT_OVERRIDE;
 
     /**
@@ -247,5 +247,5 @@
      *          more output afterwards.
      */
-    virtual RTCString *finalize();
+    virtual RTCString *finalize() RT_NOEXCEPT;
 
 protected:
Index: trunk/include/iprt/cpp/reststringmap.h
===================================================================
--- trunk/include/iprt/cpp/reststringmap.h	(revision 74415)
+++ trunk/include/iprt/cpp/reststringmap.h	(revision 74425)
@@ -44,5 +44,5 @@
 public:
     /** Default destructor. */
-    RTCRestStringMapBase();
+    RTCRestStringMapBase() RT_NOEXCEPT;
     /** Copy constructor. */
     RTCRestStringMapBase(RTCRestStringMapBase const &a_rThat);
@@ -53,29 +53,29 @@
 
     /* Overridden methods: */
-    virtual RTCRestObjectBase *baseClone() const RT_OVERRIDE;
-    virtual int resetToDefault() RT_OVERRIDE;
-    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_OVERRIDE;
-    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_OVERRIDE;
+    virtual RTCRestObjectBase *baseClone() const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int resetToDefault() RT_NOEXCEPT RT_OVERRIDE;
+    virtual RTCRestOutputBase &serializeAsJson(RTCRestOutputBase &a_rDst) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual int deserializeFromJson(RTCRestJsonCursor const &a_rCursor) RT_NOEXCEPT RT_OVERRIDE;
     // later?
-    //virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_OVERRIDE;
+    //virtual int toString(RTCString *a_pDst, uint32_t a_fFlags = kCollectionFormat_Unspecified) const RT_NOEXCEPT RT_OVERRIDE;
     //virtual int fromString(RTCString const &a_rValue, const char *a_pszName, PRTERRINFO a_pErrInfo = NULL,
-    //                       uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_OVERRIDE;
-    virtual kTypeClass typeClass(void) const RT_OVERRIDE;
-    virtual const char *typeName(void) const RT_OVERRIDE;
+    //                       uint32_t a_fFlags = kCollectionFormat_Unspecified) RT_NOEXCEPT RT_OVERRIDE;
+    virtual kTypeClass typeClass(void) const RT_NOEXCEPT RT_OVERRIDE;
+    virtual const char *typeName(void) const RT_NOEXCEPT RT_OVERRIDE;
 
     /**
      * Clear the content of the map.
      */
-    void clear();
+    void clear() RT_NOEXCEPT;
 
     /**
      * Checks if the map is empty.
      */
-    inline bool isEmpty() const { return m_cEntries == 0; }
+    inline bool isEmpty() const RT_NOEXCEPT { return m_cEntries == 0; }
 
     /**
      * Gets the number of entries in the map.
      */
-    size_t size() const;
+    size_t size() const RT_NOEXCEPT;
 
     /**
@@ -84,5 +84,5 @@
      * @param   a_pszKey   The key to check fo.
      */
-    bool containsKey(const char *a_pszKey) const;
+    bool containsKey(const char *a_pszKey) const RT_NOEXCEPT;
 
     /**
@@ -91,5 +91,5 @@
      * @param   a_rStrKey   The key to check fo.
      */
-    bool containsKey(RTCString const &a_rStrKey) const;
+    bool containsKey(RTCString const &a_rStrKey) const RT_NOEXCEPT;
 
     /**
@@ -98,5 +98,5 @@
      * @param   a_pszKey    The key to remove.
      */
-    bool remove(const char *a_pszKey);
+    bool remove(const char *a_pszKey) RT_NOEXCEPT;
 
     /**
@@ -105,5 +105,5 @@
      * @param   a_rStrKey   The key to remove.
      */
-    bool remove(RTCString const &a_rStrKey);
+    bool remove(RTCString const &a_rStrKey) RT_NOEXCEPT;
 
     /**
@@ -117,5 +117,5 @@
      * @param   a_fReplace  Whether to replace or fail on key collision.
      */
-    int putNewValue(RTCRestObjectBase **a_ppValue, const char *a_pszKey, size_t a_cchKey = RTSTR_MAX, bool a_fReplace = false);
+    int putNewValue(RTCRestObjectBase **a_ppValue, const char *a_pszKey, size_t a_cchKey = RTSTR_MAX, bool a_fReplace = false) RT_NOEXCEPT;
 
     /**
@@ -128,5 +128,5 @@
      * @param   a_fReplace  Whether to replace or fail on key collision.
      */
-    int putNewValue(RTCRestObjectBase **a_ppValue, RTCString const &a_rStrKey, bool a_fReplace = false);
+    int putNewValue(RTCRestObjectBase **a_ppValue, RTCString const &a_rStrKey, bool a_fReplace = false) RT_NOEXCEPT;
 
 protected:
@@ -159,17 +159,17 @@
     private:
         MapEntry            *m_pCur;
-        ConstIterator();
+        ConstIterator() RT_NOEXCEPT;
     protected:
-        ConstIterator(MapEntry *a_pEntry) : m_pCur(a_pEntry) { }
+        ConstIterator(MapEntry *a_pEntry) RT_NOEXCEPT : m_pCur(a_pEntry) { }
     public:
-        ConstIterator(ConstIterator const &a_rThat) : m_pCur(a_rThat.m_pCur) { }
+        ConstIterator(ConstIterator const &a_rThat) RT_NOEXCEPT : m_pCur(a_rThat.m_pCur) { }
 
         /** Gets the key string. */
-        inline RTCString const         &getKey()   { return m_pCur->strKey; }
+        inline RTCString const         &getKey() RT_NOEXCEPT   { return m_pCur->strKey; }
         /** Gets poitner to the value object. */
-        inline RTCRestObjectBase const *getValue() { return m_pCur->pValue; }
+        inline RTCRestObjectBase const *getValue() RT_NOEXCEPT { return m_pCur->pValue; }
 
         /** Advance to the next map entry. */
-        inline ConstIterator &operator++()
+        inline ConstIterator &operator++() RT_NOEXCEPT
         {
             m_pCur = RTListNodeGetNextCpp(&m_pCur->ListEntry, MapEntry, ListEntry);
@@ -178,5 +178,5 @@
 
         /** Advance to the previous map entry. */
-        inline ConstIterator &operator--()
+        inline ConstIterator &operator--() RT_NOEXCEPT
         {
             m_pCur = RTListNodeGetPrevCpp(&m_pCur->ListEntry, MapEntry, ListEntry);
@@ -185,7 +185,7 @@
 
         /** Compare equal. */
-        inline bool operator==(ConstIterator const &a_rThat) { return m_pCur == a_rThat.m_pCur; }
+        inline bool operator==(ConstIterator const &a_rThat) RT_NOEXCEPT { return m_pCur == a_rThat.m_pCur; }
         /** Compare not equal. */
-        inline bool operator!=(ConstIterator const &a_rThat) { return m_pCur != a_rThat.m_pCur; }
+        inline bool operator!=(ConstIterator const &a_rThat) RT_NOEXCEPT { return m_pCur != a_rThat.m_pCur; }
 
         /* Map class must be friend so it can use the MapEntry constructor. */
@@ -194,5 +194,5 @@
 
     /** Returns iterator for the first map entry (unless it's empty and it's also the end). */
-    inline ConstIterator begin() const
+    inline ConstIterator begin() const RT_NOEXCEPT
     {
         if (!RTListIsEmpty(&m_ListHead))
@@ -201,5 +201,5 @@
     }
     /** Returns iterator for the last map entry (unless it's empty and it's also the end). */
-    inline ConstIterator last() const
+    inline ConstIterator last() const RT_NOEXCEPT
     {
         if (!RTListIsEmpty(&m_ListHead))
@@ -208,5 +208,5 @@
     }
     /** Returns the end iterator.  This does not ever refer to an actual map entry. */
-    inline ConstIterator end() const
+    inline ConstIterator end() const RT_NOEXCEPT
     {
         return ConstIterator(RT_FROM_CPP_MEMBER(&m_ListHead, MapEntry, ListEntry));
@@ -221,5 +221,5 @@
      * @returns Pointer to new map object on success, NULL if out of memory.
      */
-    virtual RTCRestStringMapBase *createClone(void) const = 0;
+    virtual RTCRestStringMapBase *createClone(void) const RT_NOEXCEPT = 0;
 
     /**
@@ -228,13 +228,13 @@
      * @returns Pointer to new value object on success, NULL if out of memory.
      */
-    virtual RTCRestObjectBase *createValue(void) = 0;
+    virtual RTCRestObjectBase *createValue(void) RT_NOEXCEPT = 0;
 
     /**
      * For accessing the static deserializeInstanceFromJson() method of the value.
      */
-    virtual int deserializeValueInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) = 0;
-
-    /**
-     * Worker for the copy constructor and the assignment operator.
+    virtual int deserializeValueInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT = 0;
+
+    /**
+     * Worker for the copy assignment method and copyMapWorkerMayThrow.
      *
      * This will use createEntryCopy to do the copying.
@@ -243,7 +243,12 @@
      * @param   a_rThat     The map to copy.  Caller makes 100% sure the it has
      *                      the same type as the destination.
-     * @param   a_fThrow    Whether to throw error.
-     */
-    int copyMapWorker(RTCRestStringMapBase const &a_rThat, bool a_fThrow);
+     */
+    int copyMapWorkerNoThrow(RTCRestStringMapBase const &a_rThat) RT_NOEXCEPT;
+
+    /**
+     * Wrapper around copyMapWorkerNoThrow() that throws allocation errors, making
+     * it suitable for copy constructors and assignment operators.
+     */
+    void copyMapWorkerMayThrow(RTCRestStringMapBase const &a_rThat);
 
     /**
@@ -257,5 +262,5 @@
      * @param   a_cchKey        The key length, the whole string by default.
      */
-    int putWorker(const char *a_pszKey, RTCRestObjectBase *a_pValue, bool a_fReplace, size_t a_cchKey = RTSTR_MAX);
+    int putWorker(const char *a_pszKey, RTCRestObjectBase *a_pValue, bool a_fReplace, size_t a_cchKey = RTSTR_MAX) RT_NOEXCEPT;
 
     /**
@@ -269,5 +274,5 @@
      * @param   a_cchKey        The key length, the whole string by default.
      */
-    int putCopyWorker(const char *a_pszKey, RTCRestObjectBase const &a_rValue, bool a_fReplace, size_t a_cchKey = RTSTR_MAX);
+    int putCopyWorker(const char *a_pszKey, RTCRestObjectBase const &a_rValue, bool a_fReplace, size_t a_cchKey = RTSTR_MAX) RT_NOEXCEPT;
 
     /**
@@ -277,5 +282,5 @@
      * @param   a_pszKey        The key which value to look up.
      */
-    RTCRestObjectBase *getWorker(const char *a_pszKey);
+    RTCRestObjectBase *getWorker(const char *a_pszKey) RT_NOEXCEPT;
 
     /**
@@ -285,8 +290,8 @@
      * @param   a_pszKey        The key which value to look up.
      */
-    RTCRestObjectBase const *getWorker(const char *a_pszKey) const;
+    RTCRestObjectBase const *getWorker(const char *a_pszKey) const RT_NOEXCEPT;
 
 private:
-    static DECLCALLBACK(int) stringSpaceDestructorCallback(PRTSTRSPACECORE pStr, void *pvUser);
+    static DECLCALLBACK(int) stringSpaceDestructorCallback(PRTSTRSPACECORE pStr, void *pvUser) RT_NOEXCEPT;
 };
 
@@ -299,5 +304,5 @@
 public:
     /** Default constructor, creates emtpy map. */
-    RTCRestStringMap()
+    RTCRestStringMap() RT_NOEXCEPT
         : RTCRestStringMapBase()
     {}
@@ -307,5 +312,5 @@
         : RTCRestStringMapBase()
     {
-        copyMapWorker(a_rThat, true /*a_fThrow*/);
+        copyMapWorkerMayThrow(a_rThat);
     }
 
@@ -319,16 +324,16 @@
     RTCRestStringMap &operator=(RTCRestStringMap const &a_rThat)
     {
-        copyMapWorker(a_rThat, true /*a_fThrow*/);
+        copyMapWorkerMayThrow(a_rThat);
         return *this;
     }
 
     /** Safe copy assignment method. */
-    int assignCopy(RTCRestStringMap const &a_rThat)
-    {
-        return copyMapWorker(a_rThat, false /*a_fThrow*/);
+    int assignCopy(RTCRestStringMap const &a_rThat) RT_NOEXCEPT
+    {
+        return copyMapWorkerNoThrow(a_rThat);
     }
 
     /** Make a clone of this object. */
-    inline RTCRestStringMap *clone() const
+    inline RTCRestStringMap *clone() const RT_NOEXCEPT
     {
         return (RTCRestStringMap *)baseClone();
@@ -336,5 +341,5 @@
 
     /** Factory method. */
-    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void)
+    static DECLCALLBACK(RTCRestObjectBase *) createInstance(void) RT_NOEXCEPT
     {
         return new (std::nothrow) RTCRestStringMap<ValueType>();
@@ -342,5 +347,5 @@
 
     /** Factory method for values. */
-    static DECLCALLBACK(RTCRestObjectBase *) createValueInstance(void)
+    static DECLCALLBACK(RTCRestObjectBase *) createValueInstance(void) RT_NOEXCEPT
     {
         return new (std::nothrow) ValueType();
@@ -348,5 +353,5 @@
 
     /** @copydoc RTCRestObjectBase::FNDESERIALIZEINSTANCEFROMJSON */
-    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance)
+    static DECLCALLBACK(int) deserializeInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT
     {
         *a_ppInstance = new (std::nothrow) RTCRestStringMap<ValueType>();
@@ -365,5 +370,5 @@
      * @param   a_fReplace      Whether to replace existing key-value pair with matching key.
      */
-    inline int put(const char *a_pszKey, ValueType *a_pValue, bool a_fReplace = false)
+    inline int put(const char *a_pszKey, ValueType *a_pValue, bool a_fReplace = false) RT_NOEXCEPT
     {
         return putWorker(a_pszKey, a_pValue, a_fReplace);
@@ -379,5 +384,5 @@
      * @param   a_fReplace      Whether to replace existing key-value pair with matching key.
      */
-    inline int put(RTCString const &a_rStrKey, ValueType *a_pValue, bool a_fReplace = false)
+    inline int put(RTCString const &a_rStrKey, ValueType *a_pValue, bool a_fReplace = false) RT_NOEXCEPT
     {
         return putWorker(a_rStrKey.c_str(), a_pValue, a_fReplace, a_rStrKey.length());
@@ -393,5 +398,5 @@
      * @param   a_fReplace      Whether to replace existing key-value pair with matching key.
      */
-    inline int putCopy(const char *a_pszKey, const ValueType &a_rValue, bool a_fReplace = false)
+    inline int putCopy(const char *a_pszKey, const ValueType &a_rValue, bool a_fReplace = false) RT_NOEXCEPT
     {
         return putCopyWorker(a_pszKey, a_rValue, a_fReplace);
@@ -407,5 +412,5 @@
      * @param   a_fReplace      Whether to replace existing key-value pair with matching key.
      */
-    inline int putCopy(RTCString const &a_rStrKey, const ValueType &a_rValue, bool a_fReplace = false)
+    inline int putCopy(RTCString const &a_rStrKey, const ValueType &a_rValue, bool a_fReplace = false) RT_NOEXCEPT
     {
         return putCopyWorker(a_rStrKey.c_str(), a_rValue, a_fReplace, a_rStrKey.length());
@@ -418,5 +423,5 @@
      * @param   a_pszKey        The key which value to look up.
      */
-    inline ValueType *get(const char *a_pszKey)
+    inline ValueType *get(const char *a_pszKey) RT_NOEXCEPT
     {
         return (ValueType *)getWorker(a_pszKey);
@@ -429,5 +434,5 @@
      * @param   a_rStrKey       The key which value to look up.
      */
-    inline ValueType *get(RTCString const &a_rStrKey)
+    inline ValueType *get(RTCString const &a_rStrKey) RT_NOEXCEPT
     {
         return (ValueType *)getWorker(a_rStrKey.c_str());
@@ -440,5 +445,5 @@
      * @param   a_pszKey        The key which value to look up.
      */
-    inline ValueType const *get(const char *a_pszKey) const
+    inline ValueType const *get(const char *a_pszKey) const RT_NOEXCEPT
     {
         return (ValueType const *)getWorker(a_pszKey);
@@ -451,5 +456,5 @@
      * @param   a_rStrKey       The key which value to look up.
      */
-    inline ValueType const *get(RTCString const &a_rStrKey) const
+    inline ValueType const *get(RTCString const &a_rStrKey) const RT_NOEXCEPT
     {
         return (ValueType const *)getWorker(a_rStrKey.c_str());
@@ -459,15 +464,15 @@
 
 protected:
-    virtual RTCRestStringMapBase *createClone(void) const RT_OVERRIDE
+    virtual RTCRestStringMapBase *createClone(void) const RT_NOEXCEPT RT_OVERRIDE
     {
         return new (std::nothrow) RTCRestStringMap();
     }
 
-    virtual RTCRestObjectBase *createValue(void) RT_OVERRIDE
+    virtual RTCRestObjectBase *createValue(void) RT_NOEXCEPT RT_OVERRIDE
     {
         return new (std::nothrow) ValueType();
     }
 
-    virtual int deserializeValueInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_OVERRIDE
+    virtual int deserializeValueInstanceFromJson(RTCRestJsonCursor const &a_rCursor, RTCRestObjectBase **a_ppInstance) RT_NOEXCEPT RT_OVERRIDE
     {
         return ValueType::deserializeInstanceFromJson(a_rCursor, a_ppInstance);
