Merge pull request #1 from afoster1/master

Need support for Sun Studio 12.1
This commit is contained in:
wiscy 2016-11-29 21:26:06 +01:00 committed by GitHub
commit d89dc2d5ad
4 changed files with 19 additions and 3 deletions

View File

@ -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

View File

@ -327,8 +327,9 @@ namespace Catch {
void handleUnfinishedSections() {
// If sections ended prematurely due to an exception we stored their
// infos here so we can tear them down outside the unwind process.
for( std::vector<SectionEndInfo>::const_reverse_iterator it = m_unfinishedSections.rbegin(),
itEnd = m_unfinishedSections.rend();
std::vector<SectionEndInfo> const& constUnfinishedSections = m_unfinishedSections;
for( std::vector<SectionEndInfo>::const_reverse_iterator it = constUnfinishedSections.rbegin(),
itEnd = constUnfinishedSections.rend();
it != itEnd;
++it )
sectionEnded( *it );

View File

@ -48,7 +48,7 @@ namespace Catch {
oss << "error: tag alias, \"" << alias << "\" is not of the form [@alias name].\n" << lineInfo;
throw std::domain_error( oss.str().c_str() );
}
if( !m_registry.insert( std::make_pair( alias, TagAlias( tag, lineInfo ) ) ).second ) {
if( !m_registry.insert( std::make_pair( std::string(alias), TagAlias( tag, lineInfo ) ) ).second ) {
std::ostringstream oss;
oss << "error: tag alias, \"" << alias << "\" already registered.\n"
<< "\tFirst seen at " << find(alias)->lineInfo << "\n"

View File

@ -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 );