mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	catch_tostring : moved defintion of rangeToString
Detail::rangeToString is now defined after the various toString
overloads. This results in them being accessible with rangeToString is
instantiated (in this case, by StringMaker<vector>). This (sort-of)
fixes the problem where contained types are toString'd incorrectly.
Consider:
  std::vector<std::string> v { "abc" };
Before:
  Catch::toString( v ) == "{ abc }"
After:
  Catch::toString( v ) == "{ "abc" }"
(note the extra pair of quotes around the "abc" - these are added by
Catch::toString( std::string ) which is now called by rangeToString)
			
			
This commit is contained in:
		| @@ -101,18 +101,7 @@ struct StringMaker<T*> { | ||||
|  | ||||
| namespace Detail { | ||||
|     template<typename InputIterator> | ||||
|     std::string rangeToString( InputIterator first, InputIterator last ) { | ||||
|         std::ostringstream oss; | ||||
|         oss << "{ "; | ||||
|         if( first != last ) { | ||||
|             oss << toString( *first ); | ||||
|             for( ++first ; first != last ; ++first ) { | ||||
|                 oss << ", " << toString( *first ); | ||||
|             } | ||||
|         } | ||||
|         oss << " }"; | ||||
|         return oss.str(); | ||||
|     } | ||||
|     std::string rangeToString( InputIterator first, InputIterator last ); | ||||
| } | ||||
|  | ||||
| template<typename T, typename Allocator> | ||||
| @@ -238,6 +227,22 @@ inline std::string toString( std::nullptr_t ) { | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|     namespace Detail { | ||||
|     template<typename InputIterator> | ||||
|     std::string rangeToString( InputIterator first, InputIterator last ) { | ||||
|         std::ostringstream oss; | ||||
|         oss << "{ "; | ||||
|         if( first != last ) { | ||||
|             oss << toString( *first ); | ||||
|             for( ++first ; first != last ; ++first ) { | ||||
|                 oss << ", " << toString( *first ); | ||||
|             } | ||||
|         } | ||||
|         oss << " }"; | ||||
|         return oss.str(); | ||||
|     } | ||||
| } | ||||
|  | ||||
| } // end namespace Catch | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Andy Sawyer
					Andy Sawyer