Fixed a linking error with g++ <= 3.2.

This commit is contained in:
Vincent Richard 2005-01-03 21:01:45 +00:00
parent bebdcb6e27
commit f80d92ee3a
2 changed files with 28 additions and 3 deletions

View File

@ -25,6 +25,8 @@ namespace vmime
{
#if !defined(__GNUC__) || ((__GNUC__ >= 3) && (__GNUC_MINOR__ >= 3))
template <>
void typeAdapter <string>::parse(const string& buffer, const string::size_type position,
const string::size_type end, string::size_type* newPosition)
@ -35,5 +37,7 @@ void typeAdapter <string>::parse(const string& buffer, const string::size_type p
*newPosition = end;
}
#endif // !defined(__GNUC__) || ((__GNUC__ >= 3) && (__GNUC_MINOR__ >= 3))
} // vmime

View File

@ -121,10 +121,31 @@ private:
};
#if defined(__GNUC__) && (__GNUC__ >= 3) && (__GNUC_MINOR__ <= 2)
// Because of a bug with g++ <= 3.2, we have to put the implementation
// of the function inline.
template <>
void typeAdapter <string>::parse(const string& buffer, const string::size_type position,
inline void typeAdapter <string>::parse
(const string& buffer, const string::size_type position,
const string::size_type end, string::size_type* newPosition)
{
m_value = string(buffer.begin() + position, buffer.begin() + end);
if (newPosition)
*newPosition = end;
}
#else
template <>
void typeAdapter <string>::parse
(const string& buffer, const string::size_type position,
const string::size_type end, string::size_type* newPosition);
#endif // defined(__GNUC__) && (__GNUC__ >= 3) && (__GNUC_MINOR__ <= 2)
} // vmime