mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-17 11:12:25 +01:00
Fixed std::distance compile error with Oracle Solaris Studio 12.1
Building Catch with Oracle Solaris Studio 12.1 generates an error when calling std::distance due to the toolchains non-compliant STL implementation. This implementation returns its result via an output parameter rather than a return value.
This commit is contained in:
parent
87803cdd2d
commit
1f97d4d318
@ -119,6 +119,16 @@
|
||||
|
||||
#endif // _MSC_VER
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Oracle Solaris Studio
|
||||
#ifdef __SUNPRO_CC
|
||||
|
||||
# if __SUNPRO_CC == 0x5100 // Oracle Solaris Studio version 12.1
|
||||
# define CATCH_INTERNAL_SUNPRO_CC_NON_COMPLIANT_STL
|
||||
# endif
|
||||
|
||||
#endif // __SUNPRO_CC
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Use variadic macros if the compiler supports them
|
||||
|
@ -218,7 +218,12 @@ namespace Catch {
|
||||
|
||||
// using messages.end() directly yields compilation error:
|
||||
std::vector<MessageInfo>::const_iterator itEnd = messages.end();
|
||||
# ifdef CATCH_INTERNAL_SUNPRO_CC_NON_COMPLIANT_STL
|
||||
std::size_t N;
|
||||
std::distance( itMessage, itEnd, N );
|
||||
# else
|
||||
const std::size_t N = static_cast<std::size_t>( std::distance( itMessage, itEnd ) );
|
||||
# endif // CATCH_INTERNAL_SUNPRO_CC_NON_COMPLIANT_STL
|
||||
|
||||
{
|
||||
Colour colourGuard( colour );
|
||||
|
Loading…
Reference in New Issue
Block a user