0028824: Possibility to build OCCT 7.1.0 and above using Visual Studio 2008

Possibility to build OCCT using Visual Studio 2008 (VC9) is restored.
For that:

- template functions and classes from namespace std or tr1 (for VC9) are imported to namespace opencascade which is then used instead of std in relevant places
- templates not provided by compiler (VC9) but required for OCCT are defined in this namespace (in Standard_Handle.hxx)
- methods implementing move semantics are excluded for VC9 compiler (which does not support && syntax)
- support of vc9 compiler is restored in build procedures and environment scripts
- check of type of the current class in macros DEFINE_STANDARD_RTTI* is refactored

VS 2008 is restored in the list of supported platforms on Overview / System Requirements.
This commit is contained in:
oan
2017-09-14 11:39:36 +03:00
committed by bugmaster
parent a4ab454c0f
commit 71c810df61
23 changed files with 201 additions and 122 deletions

View File

@@ -192,6 +192,8 @@ public:
}
//! Move constructor
#if(defined(_MSC_VER) && (_MSC_VER < 1600))
#else
NCollection_Array1 (NCollection_Array1&& theOther)
: myLowerBound (theOther.myLowerBound),
myUpperBound (theOther.myUpperBound),
@@ -202,6 +204,7 @@ public:
theOther.myDeletable = false;
theOther.myData = NULL;
}
#endif
//! C array-based constructor
NCollection_Array1 (const TheItemType& theBegin,
@@ -279,7 +282,7 @@ public:
}
//! Move assignment
NCollection_Array1& Move (NCollection_Array1&& theOther)
NCollection_Array1& Move (NCollection_Array1& theOther)
{
if (&theOther == this)
{
@@ -308,10 +311,13 @@ public:
}
//! Move assignment operator.
#if(defined(_MSC_VER) && (_MSC_VER < 1600))
#else
NCollection_Array1& operator= (NCollection_Array1&& theOther)
{
return Move (std::move (theOther));
return Move (theOther);
}
#endif
//! @return first element
const TheItemType& First() const