Fixes compiler error for some versions of GCC

- Manual application of PR #196 (couldn’t merge)
- See also #226
This commit is contained in:
Phil Nash 2013-12-18 08:37:23 +00:00
parent 66d641af64
commit 9e529853ee

View File

@ -92,9 +92,16 @@ namespace Catch {
std::string stdOut; std::string stdOut;
std::string stdErr; std::string stdErr;
}; };
friend bool operator == ( Ptr<SectionNode> const& node, SectionInfo const& other ) {
return node->stats.sectionInfo.lineInfo == other.lineInfo; struct BySectionInfo {
BySectionInfo( SectionInfo const& other ) : m_other( other ) {}
bool operator() ( Ptr<SectionNode> const& node ) const {
return node->stats.sectionInfo.lineInfo == m_other.lineInfo;
} }
private:
SectionInfo const& m_other;
};
typedef Node<TestCaseStats, SectionNode> TestCaseNode; typedef Node<TestCaseStats, SectionNode> TestCaseNode;
typedef Node<TestGroupStats, TestCaseNode> TestGroupNode; typedef Node<TestGroupStats, TestCaseNode> TestGroupNode;
@ -122,7 +129,9 @@ namespace Catch {
else { else {
SectionNode& parentNode = *m_sectionStack.back(); SectionNode& parentNode = *m_sectionStack.back();
SectionNode::ChildSections::const_iterator it = SectionNode::ChildSections::const_iterator it =
std::find( parentNode.childSections.begin(), parentNode.childSections.end(), sectionInfo ); std::find_if( parentNode.childSections.begin(),
parentNode.childSections.end(),
BySectionInfo( sectionInfo ) );
if( it == parentNode.childSections.end() ) { if( it == parentNode.childSections.end() ) {
node = new SectionNode( incompleteStats ); node = new SectionNode( incompleteStats );
parentNode.childSections.push_back( node ); parentNode.childSections.push_back( node );