diff --git a/include/boost/regex/v4/instances.hpp b/include/boost/regex/v4/instances.hpp index 007ffd35..9e9060ca 100644 --- a/include/boost/regex/v4/instances.hpp +++ b/include/boost/regex/v4/instances.hpp @@ -60,7 +60,11 @@ template class BOOST_REGEX_DECL reg_expression< BOOST_REGEX_CHAR_T >; #elif (defined(BOOST_MSVC) && defined(_MSC_EXTENSIONS)) || defined(__GNUC__) # ifndef BOOST_REGEX_INSTANTIATE -# define template extern template +# ifdef __GNUC__ +# define template __extension__ extern template +# else +# define template extern template +# endif # endif # ifdef BOOST_MSVC diff --git a/include/boost/regex/v4/perl_matcher_common.hpp b/include/boost/regex/v4/perl_matcher_common.hpp index 20148375..ad661d22 100644 --- a/include/boost/regex/v4/perl_matcher_common.hpp +++ b/include/boost/regex/v4/perl_matcher_common.hpp @@ -413,10 +413,11 @@ bool perl_matcher::match_match() m_presult->set_second(position); pstate = 0; m_has_found_match = true; - if((m_match_flags & (match_posix|match_any)) == match_posix) + if((m_match_flags & match_posix) == match_posix) { m_result.maybe_assign(*m_presult); - return false; + if((m_match_flags & match_any) == 0) + return false; } #ifdef BOOST_REGEX_MATCH_EXTRA if(match_extra & m_match_flags)