<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stefano+CiscoSystems</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stefano+CiscoSystems"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Stefano_CiscoSystems"/>
	<updated>2026-07-26T13:49:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSV2005&amp;diff=36908</id>
		<title>User:Stefano CiscoSystems/Compiling Issues with Vista and MSV2005</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSV2005&amp;diff=36908"/>
		<updated>2007-10-19T10:05:41Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: /* Error: No textures - all gray world when launching my own compiled Viewer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Error: No textures - all gray world when launching my own compiled Viewer =&lt;br /&gt;
&lt;br /&gt;
[[Image:NoTexturesViewerScreenshot.jpg|right|thumb|200px|My viewer with no textures]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;NOTE: i got it working, see [[User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSV2005#NOW_it_works|down here ]] what (apparently!) have solved my problem.&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A picture is worth one thousand words :)&lt;br /&gt;
&lt;br /&gt;
I have very few warnings left in my compilation/linking (probably gonna join them at some point if it might help), and mostly looking for a weird vc80_ib_1.pdb in relation to debug information for llmozlib-vc80 that i took from the Linden official libraries.&lt;br /&gt;
&lt;br /&gt;
To me it sounds like there&#039;s some mismatch in one of the libs or the dlls among: openjpeg,libjpeg_6b, or libpng. &lt;br /&gt;
Sounds slightly related to [https://jira.secondlife.com/browse/VWR-123 bug VWR-123]&lt;br /&gt;
&#039;&#039;&#039;That&#039;s my guess, but maybe somebody knowing better how things work can point me towards the error straight away?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
(I already tried using the libs from the Linden Libraries file, and that&#039;s no good)&lt;br /&gt;
&lt;br /&gt;
These the library versions i use (or tried using but did not work):&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
c-ares: 1.4.0&lt;br /&gt;
expat: 2.0.1&lt;br /&gt;
jpegsrc: 6b&lt;br /&gt;
libogg: 1.1.3&lt;br /&gt;
libvorbis: 1.2.0&lt;br /&gt;
openjpeg: 1.2&lt;br /&gt;
openssl: 0.9.8e&lt;br /&gt;
TUT: 2006-11-04&lt;br /&gt;
xmlrpc-epi: 0.51&lt;br /&gt;
zlib: 1.2.3&lt;br /&gt;
apr: 1.2.11&lt;br /&gt;
apr-iconv: 1.2.10&lt;br /&gt;
apr-util: 1.2.10&lt;br /&gt;
boost: 1.34.1&lt;br /&gt;
curl: 7.17.0&lt;br /&gt;
fmodapi: 3.7.5&lt;br /&gt;
freetype: 2.3.4&lt;br /&gt;
libpng: 1.2.8 (had some issues compiling this with zlib)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there a way to understand if the libraries I am linking are fine without doing the full link and launching the client trial and error procedure?&#039;&#039;&#039; Like, a version browser or something.&lt;br /&gt;
&lt;br /&gt;
== NOW it works ==&lt;br /&gt;
&lt;br /&gt;
I re-copied all the artwork, dlls, back and forth between official client and visual studio project and the downloaded files from linden, checked that newviewer is the main project in the solution, and cleaned/rebuilt the whole thing, and it&#039;s now working.&lt;br /&gt;
&lt;br /&gt;
This answer from Scott Squires makes sense with what happened:&lt;br /&gt;
&lt;br /&gt;
&amp;gt; I had a problem like this, though I&#039;m not on vista and it &lt;br /&gt;
&amp;gt; turned out not to be a library problem.  In my case it was &lt;br /&gt;
&amp;gt; that SL couldn&#039;t find some files with video card info in &lt;br /&gt;
&amp;gt; them, so I guess it thought my video card couldn&#039;t render &lt;br /&gt;
&amp;gt; anything.  I copied some data files from the regular SL &lt;br /&gt;
&amp;gt; install and it started working.  It was complaining about &lt;br /&gt;
&amp;gt; them in the black console window, so try checking there for clues.&lt;br /&gt;
&lt;br /&gt;
= My notes on the 3rd party libraries =&lt;br /&gt;
&lt;br /&gt;
In general, some libraries I ended up using the pre-compiled ones downloaded from the wiki because following the instructions to compile the 3rd party libraries would keep on hitting missing symbols. Without a list of the required versions (unless the one [https://wiki.secondlife.com/wiki/Third_Party_Libraries here] is really up-to-date?), and with compile instructions that are not always working with 2005, it has been really painful.&lt;br /&gt;
&lt;br /&gt;
=== Freetype ===&lt;br /&gt;
Freetype, stick with 2.3.4: 2.3.5 was not working with me, missing some symbols.&lt;br /&gt;
&lt;br /&gt;
=== Ares ===&lt;br /&gt;
&lt;br /&gt;
What the he&amp;amp;&amp;amp;?! I could find no info on what&#039;s missing wrt to the C-Ares libraries.&lt;br /&gt;
The VS project comes requiring even a libares.lib library, but I noticed that removing that requirement but still adding and /ares/ares.h subdirectory for the includes solve the issue.&lt;br /&gt;
I wonder if everything necessary is inside the curl library already?&lt;br /&gt;
&lt;br /&gt;
=== cURL ===&lt;br /&gt;
&lt;br /&gt;
I really did not manage to get libraries that would link. I ended up using the Linden ones.&lt;br /&gt;
&lt;br /&gt;
=== ZLib/PNG12 ===&lt;br /&gt;
&lt;br /&gt;
Had some problems too&lt;br /&gt;
&lt;br /&gt;
=== TUT ===&lt;br /&gt;
&lt;br /&gt;
Only version: 2006-11-04&lt;br /&gt;
works with the patch.&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSV2005&amp;diff=36906</id>
		<title>User:Stefano CiscoSystems/Compiling Issues with Vista and MSV2005</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSV2005&amp;diff=36906"/>
		<updated>2007-10-19T10:04:43Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Error: No textures - all gray world when launching my own compiled Viewer =&lt;br /&gt;
&lt;br /&gt;
[[Image:NoTexturesViewerScreenshot.jpg|right|thumb|200px|caption My viewer with no textures]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;NOTE: i got it working, see [[User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSV2005#NOW_it_works|down here ]] what (apparently!) have solved my problem.&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A picture is worth one thousand words :)&lt;br /&gt;
&lt;br /&gt;
I have very few warnings left in my compilation/linking (probably gonna join them at some point if it might help), and mostly looking for a weird vc80_ib_1.pdb in relation to debug information for llmozlib-vc80 that i took from the Linden official libraries.&lt;br /&gt;
&lt;br /&gt;
To me it sounds like there&#039;s some mismatch in one of the libs or the dlls among: openjpeg,libjpeg_6b, or libpng. &lt;br /&gt;
Sounds slightly related to [https://jira.secondlife.com/browse/VWR-123 bug VWR-123]&lt;br /&gt;
&#039;&#039;&#039;That&#039;s my guess, but maybe somebody knowing better how things work can point me towards the error straight away?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
(I already tried using the libs from the Linden Libraries file, and that&#039;s no good)&lt;br /&gt;
&lt;br /&gt;
These the library versions i use (or tried using but did not work):&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
c-ares: 1.4.0&lt;br /&gt;
expat: 2.0.1&lt;br /&gt;
jpegsrc: 6b&lt;br /&gt;
libogg: 1.1.3&lt;br /&gt;
libvorbis: 1.2.0&lt;br /&gt;
openjpeg: 1.2&lt;br /&gt;
openssl: 0.9.8e&lt;br /&gt;
TUT: 2006-11-04&lt;br /&gt;
xmlrpc-epi: 0.51&lt;br /&gt;
zlib: 1.2.3&lt;br /&gt;
apr: 1.2.11&lt;br /&gt;
apr-iconv: 1.2.10&lt;br /&gt;
apr-util: 1.2.10&lt;br /&gt;
boost: 1.34.1&lt;br /&gt;
curl: 7.17.0&lt;br /&gt;
fmodapi: 3.7.5&lt;br /&gt;
freetype: 2.3.4&lt;br /&gt;
libpng: 1.2.8 (had some issues compiling this with zlib)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there a way to understand if the libraries I am linking are fine without doing the full link and launching the client trial and error procedure?&#039;&#039;&#039; Like, a version browser or something.&lt;br /&gt;
&lt;br /&gt;
== NOW it works ==&lt;br /&gt;
&lt;br /&gt;
I re-copied all the artwork, dlls, back and forth between official client and visual studio project and the downloaded files from linden, checked that newviewer is the main project in the solution, and cleaned/rebuilt the whole thing, and it&#039;s now working.&lt;br /&gt;
&lt;br /&gt;
This answer from Scott Squires makes sense with what happened:&lt;br /&gt;
&lt;br /&gt;
&amp;gt; I had a problem like this, though I&#039;m not on vista and it &lt;br /&gt;
&amp;gt; turned out not to be a library problem.  In my case it was &lt;br /&gt;
&amp;gt; that SL couldn&#039;t find some files with video card info in &lt;br /&gt;
&amp;gt; them, so I guess it thought my video card couldn&#039;t render &lt;br /&gt;
&amp;gt; anything.  I copied some data files from the regular SL &lt;br /&gt;
&amp;gt; install and it started working.  It was complaining about &lt;br /&gt;
&amp;gt; them in the black console window, so try checking there for clues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= My notes on the 3rd party libraries =&lt;br /&gt;
&lt;br /&gt;
In general, some libraries I ended up using the pre-compiled ones downloaded from the wiki because following the instructions to compile the 3rd party libraries would keep on hitting missing symbols. Without a list of the required versions (unless the one [https://wiki.secondlife.com/wiki/Third_Party_Libraries here] is really up-to-date?), and with compile instructions that are not always working with 2005, it has been really painful.&lt;br /&gt;
&lt;br /&gt;
=== Freetype ===&lt;br /&gt;
Freetype, stick with 2.3.4: 2.3.5 was not working with me, missing some symbols.&lt;br /&gt;
&lt;br /&gt;
=== Ares ===&lt;br /&gt;
&lt;br /&gt;
What the he&amp;amp;&amp;amp;?! I could find no info on what&#039;s missing wrt to the C-Ares libraries.&lt;br /&gt;
The VS project comes requiring even a libares.lib library, but I noticed that removing that requirement but still adding and /ares/ares.h subdirectory for the includes solve the issue.&lt;br /&gt;
I wonder if everything necessary is inside the curl library already?&lt;br /&gt;
&lt;br /&gt;
=== cURL ===&lt;br /&gt;
&lt;br /&gt;
I really did not manage to get libraries that would link. I ended up using the Linden ones.&lt;br /&gt;
&lt;br /&gt;
=== ZLib/PNG12 ===&lt;br /&gt;
&lt;br /&gt;
Had some problems too&lt;br /&gt;
&lt;br /&gt;
=== TUT ===&lt;br /&gt;
&lt;br /&gt;
Only version: 2006-11-04&lt;br /&gt;
works with the patch.&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSV2005&amp;diff=36754</id>
		<title>User:Stefano CiscoSystems/Compiling Issues with Vista and MSV2005</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSV2005&amp;diff=36754"/>
		<updated>2007-10-18T16:52:10Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Error: No textures - all gray world when launching my own compiled Viewer =&lt;br /&gt;
&lt;br /&gt;
[[Image:NoTexturesViewerScreenshot.jpg|right|thumb|200px|]]&lt;br /&gt;
&lt;br /&gt;
A picture is worth one thousand words :)&lt;br /&gt;
&lt;br /&gt;
I have very few warnings left in my compilation/linking (probably gonna join them at some point if it might help), and mostly looking for a weird vc80_ib_1.pdb in relation to debug information for llmozlib-vc80 that i took from the Linden official libraries.&lt;br /&gt;
&lt;br /&gt;
To me it sounds like there&#039;s some mismatch in one of the libs or the dlls among: openjpeg,libjpeg_6b, or libpng. &lt;br /&gt;
Sounds slightly related to [https://jira.secondlife.com/browse/VWR-123 bug VWR-123]&lt;br /&gt;
&#039;&#039;&#039;That&#039;s my guess, but maybe somebody knowing better how things work can point me towards the error straight away?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
(I already tried using the libs from the Linden Libraries file, and that&#039;s no good)&lt;br /&gt;
&lt;br /&gt;
These the library versions i use (or tried using but did not work):&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
c-ares: 1.4.0&lt;br /&gt;
expat: 2.0.1&lt;br /&gt;
jpegsrc: 6b&lt;br /&gt;
libogg: 1.1.3&lt;br /&gt;
libvorbis: 1.2.0&lt;br /&gt;
openjpeg: 1.2&lt;br /&gt;
openssl: 0.9.8e&lt;br /&gt;
TUT: 2006-11-04&lt;br /&gt;
xmlrpc-epi: 0.51&lt;br /&gt;
zlib: 1.2.3&lt;br /&gt;
apr: 1.2.11&lt;br /&gt;
apr-iconv: 1.2.10&lt;br /&gt;
apr-util: 1.2.10&lt;br /&gt;
boost: 1.34.1&lt;br /&gt;
curl: 7.17.0&lt;br /&gt;
fmodapi: 3.7.5&lt;br /&gt;
freetype: 2.3.4&lt;br /&gt;
libpng: 1.2.8 (had some issues compiling this with zlib)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there a way to understand if the libraries I am linking are fine without doing the full link and launching the client trial and error procedure?&#039;&#039;&#039; Like, a version browser or something.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== My notes on the 3rd party libraries ==&lt;br /&gt;
&lt;br /&gt;
In general, some libraries I ended up using the pre-compiled ones downloaded from the wiki because following the instructions to compile the 3rd party libraries would keep on hitting missing symbols. Without a list of the required versions (unless the one [https://wiki.secondlife.com/wiki/Third_Party_Libraries here] is really up-to-date?), and with compile instructions that are not always working with 2005, it has been really painful.&lt;br /&gt;
&lt;br /&gt;
=== Freetype ===&lt;br /&gt;
Freetype, stick with 2.3.4: 2.3.5 was not working with me, missing some symbols.&lt;br /&gt;
&lt;br /&gt;
=== Ares ===&lt;br /&gt;
&lt;br /&gt;
What the he&amp;amp;&amp;amp;?! I could find no info on what&#039;s missing wrt to the C-Ares libraries.&lt;br /&gt;
The VS project comes requiring even a libares.lib library, but I noticed that removing that requirement but still adding and /ares/ares.h subdirectory for the includes solve the issue.&lt;br /&gt;
I wonder if everything necessary is inside the curl library already?&lt;br /&gt;
&lt;br /&gt;
=== cURL ===&lt;br /&gt;
&lt;br /&gt;
I really did not manage to get libraries that would link. I ended up using the Linden ones.&lt;br /&gt;
&lt;br /&gt;
=== ZLib/PNG12 ===&lt;br /&gt;
&lt;br /&gt;
Had some problems too&lt;br /&gt;
&lt;br /&gt;
=== TUT ===&lt;br /&gt;
&lt;br /&gt;
Only version: 2006-11-04&lt;br /&gt;
works with the patch.&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSV2005&amp;diff=36750</id>
		<title>User:Stefano CiscoSystems/Compiling Issues with Vista and MSV2005</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSV2005&amp;diff=36750"/>
		<updated>2007-10-18T16:23:06Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: New page:  Issue: No textures - all gray world when launching my own compiled&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Issue: No textures - all gray world when launching my own compiled&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:NoTexturesViewerScreenshot.jpg&amp;diff=36748</id>
		<title>File:NoTexturesViewerScreenshot.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:NoTexturesViewerScreenshot.jpg&amp;diff=36748"/>
		<updated>2007-10-18T16:13:03Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: Screenshot of my self-built viewer showing the issue of no textures: 3D is working fine, but there are no images.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot of my self-built viewer showing the issue of no textures: 3D is working fine, but there are no images.&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems&amp;diff=36749</id>
		<title>User:Stefano CiscoSystems</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems&amp;diff=36749"/>
		<updated>2007-10-18T16:13:00Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Placeholder only for the moment.&lt;br /&gt;
&lt;br /&gt;
I work in the Networked Virtual Environments group for the Cisco Technology Center.&lt;br /&gt;
&lt;br /&gt;
My [[Compiling Issues with Vista/MSVS2008]]&lt;br /&gt;
&lt;br /&gt;
My [[User:Stefano_CiscoSystems/Compiling Issues with Vista and MSV2005]]&lt;br /&gt;
&lt;br /&gt;
[[User:Stefano_CiscoSystems|Stefano Crosta]]&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=36176</id>
		<title>User:Stefano CiscoSystems/Compiling Issues with Vista and MSVS2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=36176"/>
		<updated>2007-10-17T07:48:34Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It sounds like nobody on SLDev was interested in the problem, so I will just post here that reverting to VS2005 simply solves the problem.&lt;br /&gt;
It is an issue with the compiles in MSVS 9, which might be worth raising to MS at some point (I did: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2280024&amp;amp;SiteID=1)&lt;br /&gt;
In the meanwhile, just forget using Orcas Beta 2, and move back to 2005.&lt;br /&gt;
&lt;br /&gt;
== could not deduce template argument from &#039;LLMessageThrottleEntry&#039; in llmessagethrottle.cpp ==&lt;br /&gt;
* [VS9PATH]\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
* [VS9PATH]\vc\include\deque(1341) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
* [VS9PATH]\vc\include\algorithm(435) : see reference to function template instantiation &#039;_FwdIt1 std::_Search_n&amp;lt;_FwdIt1,_Diff2,_Ty,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr,std::random_access_iterator_tag)&#039; being compiled&lt;br /&gt;
&lt;br /&gt;
The first error is related to the search_n for the LLMessageThrottleEntry class on line 113 of \indra\llmessage\llmessagethrottle.cpp.&lt;br /&gt;
&lt;br /&gt;
The error happens in [yourpath]\Visual Studio 9.0\vc\include\algorithm, on line 406 (excerpt follows)&lt;br /&gt;
&lt;br /&gt;
  template&amp;lt;class _FwdIt1,&lt;br /&gt;
 	class _Diff2,&lt;br /&gt;
 	class _Ty,&lt;br /&gt;
 	class _Pr&amp;gt; inline&lt;br /&gt;
 	_FwdIt1 _Search_n(_FwdIt1 _First1, _FwdIt1 _Last1,&lt;br /&gt;
 		_Diff2 _Count, const _Ty&amp;amp; _Val, _Pr _Pred, random_access_iterator_tag)&lt;br /&gt;
 	{	// find first _Count * _Val satisfying _Pred, random-access iterators&lt;br /&gt;
 	_DEBUG_RANGE(_First1, _Last1);&lt;br /&gt;
 	_DEBUG_POINTER(_Pred);&lt;br /&gt;
  &lt;br /&gt;
 	if (_Count &amp;lt;= 0)&lt;br /&gt;
 		return (_First1);&lt;br /&gt;
  &lt;br /&gt;
  	_FwdIt1 _Oldfirst1 = _First1;&lt;br /&gt;
 	for (; _Count &amp;lt;= _Last1 - _Oldfirst1; )&lt;br /&gt;
 		{	// enough room, look for a match &lt;br /&gt;
 		if (_Pred(*_First1, _Val))&lt;br /&gt;
 			{	// found part of possible match, check it out&lt;br /&gt;
 			_Diff2 _Count1 = _Count;&lt;br /&gt;
 			_FwdIt1 _Mid1  = _First1;&lt;br /&gt;
  &lt;br /&gt;
 406:			for (; _Oldfirst1 != _First1 &amp;amp;&amp;amp; _First1[-1] == _Val; --_First1)&lt;br /&gt;
 				--_Count1;	// back up over any skipped prefix&lt;br /&gt;
  &lt;br /&gt;
 			if (_Count1 &amp;lt;= _Last1 - _Mid1)&lt;br /&gt;
 				for (; ; )	// enough left, test suffix&lt;br /&gt;
 					if (--_Count1 == 0)&lt;br /&gt;
 						return (_First1);	// found rest of match, report it&lt;br /&gt;
 					else if (!_Pred(*++_Mid1, _Val))&lt;br /&gt;
 						break;	// short match not at end&lt;br /&gt;
  &lt;br /&gt;
 			_Oldfirst1 = ++_Mid1;	// failed match, take small jump&lt;br /&gt;
 			_First1 = _Oldfirst1;&lt;br /&gt;
 			}&lt;br /&gt;
 		else&lt;br /&gt;
 			{	// no match, take big jump and back up as needed&lt;br /&gt;
 			_Oldfirst1 = _First1 + 1;&lt;br /&gt;
 			_First1 += _Count;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	return (_Last1);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
So the problem seems to be the operator == in the equality:&lt;br /&gt;
 _First1[-1] == _Val; &lt;br /&gt;
coming from the search_n operation.&lt;br /&gt;
&lt;br /&gt;
They both evaluate to a &lt;br /&gt;
 const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&lt;br /&gt;
which types are ambiguous for the compiler.&lt;br /&gt;
&lt;br /&gt;
Here is the exact copy of the full compilation error:&lt;br /&gt;
&lt;br /&gt;
 1&amp;gt;------ Build started: Project: llmessage, Configuration: Debug Win32 ------&lt;br /&gt;
 1&amp;gt;Compiling...&lt;br /&gt;
 1&amp;gt;llmessagethrottle.cpp&lt;br /&gt;
 1&amp;gt;c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(134) : warning C4189: &#039;message_list&#039; : local variable is initialized but not referenced&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\deque(1341) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(435) : see reference to function template instantiation &#039;_FwdIt1 std::_Search_n&amp;lt;_FwdIt1,_Diff2,_Ty,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr,std::random_access_iterator_tag)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;        c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(117) : see reference to function template instantiation &#039;_FwdIt1 std::search_n&amp;lt;LLMessageThrottle::message_list_iterator_t,int,LLMessageThrottleEntry,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;,const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\list(1299) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;,const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xtree(1459) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const _Elem *)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(90) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const _Elem *,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const _Elem *&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(80) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(70) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\vector(1309) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;,const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\iterator(266) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;,const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\streambuf(548) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;,const std::allocator&amp;lt;_Other&amp;gt; &amp;amp;) throw()&#039; : could not deduce template argument for &#039;const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xmemory(173) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;,const std::reverse_iterator&amp;lt;_RanIt2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2193) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;,const std::_Revranit&amp;lt;_RanIt2,_Base2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2007) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;,const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\utility(68) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2676: binary &#039;==&#039; : &#039;LLMessageThrottleEntry&#039; does not define this operator or a conversion to a type acceptable to the predefined operator&lt;br /&gt;
 1&amp;gt;Build log was saved at &amp;quot;file://c:\Sources\SecondLife\LindenLabClient\indra\llmessage\Debug\BuildLog.htm&amp;quot;&lt;br /&gt;
 1&amp;gt;llmessage - 14 error(s), 1 warning(s)&lt;br /&gt;
 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========&lt;br /&gt;
&lt;br /&gt;
And this is the content of the file llmessagethrottle.cpp that i am using:&lt;br /&gt;
&lt;br /&gt;
 /** &lt;br /&gt;
  * @file llmessagethrottle.cpp&lt;br /&gt;
  * @brief LLMessageThrottle class used for throttling messages.&lt;br /&gt;
  *&lt;br /&gt;
  * Copyright (c) 2004-2007, Linden Research, Inc.&lt;br /&gt;
  * &lt;br /&gt;
  * Second Life Viewer Source Code&lt;br /&gt;
  * The source code in this file (&amp;quot;Source Code&amp;quot;) is provided by Linden Lab&lt;br /&gt;
  * to you under the terms of the GNU General Public License, version 2.0&lt;br /&gt;
  * (&amp;quot;GPL&amp;quot;), unless you have obtained a separate licensing agreement&lt;br /&gt;
  * (&amp;quot;Other License&amp;quot;), formally executed by you and Linden Lab.  Terms of&lt;br /&gt;
  * the GPL can be found in doc/GPL-license.txt in this distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/gplv2&lt;br /&gt;
  * &lt;br /&gt;
  * There are special exceptions to the terms and conditions of the GPL as&lt;br /&gt;
  * it is applied to this Source Code. View the full text of the exception&lt;br /&gt;
  * in the file doc/FLOSS-exception.txt in this software distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/flossexception&lt;br /&gt;
  * &lt;br /&gt;
  * By copying, modifying or distributing this software, you acknowledge&lt;br /&gt;
  * that you have read and understood your obligations described above,&lt;br /&gt;
  * and agree to abide by those obligations.&lt;br /&gt;
  * &lt;br /&gt;
  * ALL LINDEN LAB SOURCE CODE IS PROVIDED &amp;quot;AS IS.&amp;quot; LINDEN LAB MAKES NO&lt;br /&gt;
  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,&lt;br /&gt;
  * COMPLETENESS OR PERFORMANCE.&lt;br /&gt;
  */&lt;br /&gt;
  &lt;br /&gt;
 #include &amp;quot;linden_common.h&amp;quot; &lt;br /&gt;
 #include &amp;quot;llhash.h&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 #include &amp;quot;llmessagethrottle.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;llframetimer.h&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
 // This is used for the stl search_n function.&lt;br /&gt;
  bool eq_message_throttle_entry(LLMessageThrottleEntry a, LLMessageThrottleEntry b)&lt;br /&gt;
  		{ return a.getHash() == b.getHash(); }&lt;br /&gt;
  &lt;br /&gt;
 const U64 SEC_TO_USEC = 1000000;&lt;br /&gt;
 		&lt;br /&gt;
 // How long (in microseconds) each type of message stays in its throttle list.&lt;br /&gt;
 const U64 MAX_MESSAGE_AGE[MTC_EOF] =&lt;br /&gt;
 {&lt;br /&gt;
 	10 * SEC_TO_USEC,	// MTC_VIEWER_ALERT&lt;br /&gt;
 	10 * SEC_TO_USEC	// MTC_AGENT_ALERT&lt;br /&gt;
 };&lt;br /&gt;
  &lt;br /&gt;
 LLMessageThrottle::LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 LLMessageThrottle::~LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 void LLMessageThrottle::pruneEntries()&lt;br /&gt;
 {&lt;br /&gt;
 	// Go through each message category, and prune entries older than max age.&lt;br /&gt;
 	S32 cat;&lt;br /&gt;
 	for (cat = 0; cat &amp;lt; MTC_EOF; cat++)&lt;br /&gt;
 	{&lt;br /&gt;
 		message_list_t* message_list = &amp;amp;(mMessageList[cat]);&lt;br /&gt;
  &lt;br /&gt;
 		// Use a reverse iterator, since entries on the back will be the oldest.&lt;br /&gt;
 		message_list_reverse_iterator_t r_iterator 	= message_list-&amp;gt;rbegin();&lt;br /&gt;
 		message_list_reverse_iterator_t r_last 		= message_list-&amp;gt;rend();&lt;br /&gt;
  &lt;br /&gt;
 		// Look for the first entry younger than the maximum age.&lt;br /&gt;
 		F32 max_age = (F32)MAX_MESSAGE_AGE[cat]; &lt;br /&gt;
 		BOOL found = FALSE;&lt;br /&gt;
 		while (r_iterator != r_last &amp;amp;&amp;amp; !found)&lt;br /&gt;
 		{&lt;br /&gt;
 			if ( LLFrameTimer::getTotalTime() - (*r_iterator).getEntryTime() &amp;lt; max_age )&lt;br /&gt;
 			{&lt;br /&gt;
 				// We found a young enough entry.&lt;br /&gt;
 				found = TRUE;&lt;br /&gt;
  &lt;br /&gt;
 				// Did we find at least one entry to remove?&lt;br /&gt;
 				if (r_iterator != message_list-&amp;gt;rbegin())&lt;br /&gt;
 				{&lt;br /&gt;
 					// Yes, remove it.&lt;br /&gt;
 					message_list-&amp;gt;erase(r_iterator.base(), message_list-&amp;gt;end());&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			else&lt;br /&gt;
 			{&lt;br /&gt;
 				r_iterator++;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
  &lt;br /&gt;
 		// If we didn&#039;t find any entries young enough to keep, remove them all.&lt;br /&gt;
 		if (!found)&lt;br /&gt;
 		{&lt;br /&gt;
 			message_list-&amp;gt;clear();&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 BOOL LLMessageThrottle::addViewerAlert(const LLUUID&amp;amp; to, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_VIEWER_ALERT]);&lt;br /&gt;
  &lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; to &amp;lt;&amp;lt; mesg;&lt;br /&gt;
  &lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
  &lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 	/*&lt;br /&gt;
         * Stefano: i did try using this but did not help: &lt;br /&gt;
 	&amp;lt;message_list_iterator_t,int,LLMessageThrottleEntry,bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;&lt;br /&gt;
 	*/&lt;br /&gt;
 	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(), 1, entry, eq_message_throttle_entry);&lt;br /&gt;
  &lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
   &lt;br /&gt;
 BOOL LLMessageThrottle::addAgentAlert(const LLUUID&amp;amp; agent, const LLUUID&amp;amp; task, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_AGENT_ALERT]);&lt;br /&gt;
  &lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; agent &amp;lt;&amp;lt; task &amp;lt;&amp;lt; mesg;&lt;br /&gt;
  &lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
  &lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 /* stefano i commented the following so to get one only error while debugging */&lt;br /&gt;
 /*	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(), &lt;br /&gt;
                                                      1, entry, eq_message_throttle_entry);    	&lt;br /&gt;
  &lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 	*/&lt;br /&gt;
  &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=36175</id>
		<title>User:Stefano CiscoSystems/Compiling Issues with Vista and MSVS2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=36175"/>
		<updated>2007-10-17T07:44:22Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: /* could not deduce template argument from &amp;#039;LLMessageThrottleEntry&amp;#039; in llmessagethrottle.cpp */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It sounds like nobody on SLDev was interested in the problem, so I will just post here that reverting to VS2005 simply solves the problem.&lt;br /&gt;
It is an issue with the compiles in MSVS 9, which might be worth raising to MS at some point, if only i knew how to do that.&lt;br /&gt;
In the meanwhile, just forget using Orcas Beta 2.&lt;br /&gt;
&lt;br /&gt;
== could not deduce template argument from &#039;LLMessageThrottleEntry&#039; in llmessagethrottle.cpp ==&lt;br /&gt;
* [VS9PATH]\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
* [VS9PATH]\vc\include\deque(1341) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
* [VS9PATH]\vc\include\algorithm(435) : see reference to function template instantiation &#039;_FwdIt1 std::_Search_n&amp;lt;_FwdIt1,_Diff2,_Ty,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr,std::random_access_iterator_tag)&#039; being compiled&lt;br /&gt;
&lt;br /&gt;
The first error is related to the search_n for the LLMessageThrottleEntry class on line 113 of \indra\llmessage\llmessagethrottle.cpp.&lt;br /&gt;
&lt;br /&gt;
The error happens in [yourpath]\Visual Studio 9.0\vc\include\algorithm, on line 406 (excerpt follows)&lt;br /&gt;
&lt;br /&gt;
  template&amp;lt;class _FwdIt1,&lt;br /&gt;
 	class _Diff2,&lt;br /&gt;
 	class _Ty,&lt;br /&gt;
 	class _Pr&amp;gt; inline&lt;br /&gt;
 	_FwdIt1 _Search_n(_FwdIt1 _First1, _FwdIt1 _Last1,&lt;br /&gt;
 		_Diff2 _Count, const _Ty&amp;amp; _Val, _Pr _Pred, random_access_iterator_tag)&lt;br /&gt;
 	{	// find first _Count * _Val satisfying _Pred, random-access iterators&lt;br /&gt;
 	_DEBUG_RANGE(_First1, _Last1);&lt;br /&gt;
 	_DEBUG_POINTER(_Pred);&lt;br /&gt;
  &lt;br /&gt;
 	if (_Count &amp;lt;= 0)&lt;br /&gt;
 		return (_First1);&lt;br /&gt;
  &lt;br /&gt;
  	_FwdIt1 _Oldfirst1 = _First1;&lt;br /&gt;
 	for (; _Count &amp;lt;= _Last1 - _Oldfirst1; )&lt;br /&gt;
 		{	// enough room, look for a match &lt;br /&gt;
 		if (_Pred(*_First1, _Val))&lt;br /&gt;
 			{	// found part of possible match, check it out&lt;br /&gt;
 			_Diff2 _Count1 = _Count;&lt;br /&gt;
 			_FwdIt1 _Mid1  = _First1;&lt;br /&gt;
  &lt;br /&gt;
 406:			for (; _Oldfirst1 != _First1 &amp;amp;&amp;amp; _First1[-1] == _Val; --_First1)&lt;br /&gt;
 				--_Count1;	// back up over any skipped prefix&lt;br /&gt;
  &lt;br /&gt;
 			if (_Count1 &amp;lt;= _Last1 - _Mid1)&lt;br /&gt;
 				for (; ; )	// enough left, test suffix&lt;br /&gt;
 					if (--_Count1 == 0)&lt;br /&gt;
 						return (_First1);	// found rest of match, report it&lt;br /&gt;
 					else if (!_Pred(*++_Mid1, _Val))&lt;br /&gt;
 						break;	// short match not at end&lt;br /&gt;
  &lt;br /&gt;
 			_Oldfirst1 = ++_Mid1;	// failed match, take small jump&lt;br /&gt;
 			_First1 = _Oldfirst1;&lt;br /&gt;
 			}&lt;br /&gt;
 		else&lt;br /&gt;
 			{	// no match, take big jump and back up as needed&lt;br /&gt;
 			_Oldfirst1 = _First1 + 1;&lt;br /&gt;
 			_First1 += _Count;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	return (_Last1);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
So the problem seems to be the operator == in the equality:&lt;br /&gt;
 _First1[-1] == _Val; &lt;br /&gt;
coming from the search_n operation.&lt;br /&gt;
&lt;br /&gt;
They both evaluate to a &lt;br /&gt;
 const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&lt;br /&gt;
which types are ambiguous for the compiler.&lt;br /&gt;
&lt;br /&gt;
Here is the exact copy of the full compilation error:&lt;br /&gt;
&lt;br /&gt;
 1&amp;gt;------ Build started: Project: llmessage, Configuration: Debug Win32 ------&lt;br /&gt;
 1&amp;gt;Compiling...&lt;br /&gt;
 1&amp;gt;llmessagethrottle.cpp&lt;br /&gt;
 1&amp;gt;c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(134) : warning C4189: &#039;message_list&#039; : local variable is initialized but not referenced&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\deque(1341) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(435) : see reference to function template instantiation &#039;_FwdIt1 std::_Search_n&amp;lt;_FwdIt1,_Diff2,_Ty,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr,std::random_access_iterator_tag)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;        c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(117) : see reference to function template instantiation &#039;_FwdIt1 std::search_n&amp;lt;LLMessageThrottle::message_list_iterator_t,int,LLMessageThrottleEntry,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;,const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\list(1299) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;,const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xtree(1459) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const _Elem *)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(90) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const _Elem *,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const _Elem *&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(80) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(70) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\vector(1309) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;,const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\iterator(266) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;,const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\streambuf(548) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;,const std::allocator&amp;lt;_Other&amp;gt; &amp;amp;) throw()&#039; : could not deduce template argument for &#039;const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xmemory(173) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;,const std::reverse_iterator&amp;lt;_RanIt2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2193) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;,const std::_Revranit&amp;lt;_RanIt2,_Base2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2007) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;,const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\utility(68) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2676: binary &#039;==&#039; : &#039;LLMessageThrottleEntry&#039; does not define this operator or a conversion to a type acceptable to the predefined operator&lt;br /&gt;
 1&amp;gt;Build log was saved at &amp;quot;file://c:\Sources\SecondLife\LindenLabClient\indra\llmessage\Debug\BuildLog.htm&amp;quot;&lt;br /&gt;
 1&amp;gt;llmessage - 14 error(s), 1 warning(s)&lt;br /&gt;
 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========&lt;br /&gt;
&lt;br /&gt;
And this is the content of the file llmessagethrottle.cpp that i am using:&lt;br /&gt;
&lt;br /&gt;
 /** &lt;br /&gt;
  * @file llmessagethrottle.cpp&lt;br /&gt;
  * @brief LLMessageThrottle class used for throttling messages.&lt;br /&gt;
  *&lt;br /&gt;
  * Copyright (c) 2004-2007, Linden Research, Inc.&lt;br /&gt;
  * &lt;br /&gt;
  * Second Life Viewer Source Code&lt;br /&gt;
  * The source code in this file (&amp;quot;Source Code&amp;quot;) is provided by Linden Lab&lt;br /&gt;
  * to you under the terms of the GNU General Public License, version 2.0&lt;br /&gt;
  * (&amp;quot;GPL&amp;quot;), unless you have obtained a separate licensing agreement&lt;br /&gt;
  * (&amp;quot;Other License&amp;quot;), formally executed by you and Linden Lab.  Terms of&lt;br /&gt;
  * the GPL can be found in doc/GPL-license.txt in this distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/gplv2&lt;br /&gt;
  * &lt;br /&gt;
  * There are special exceptions to the terms and conditions of the GPL as&lt;br /&gt;
  * it is applied to this Source Code. View the full text of the exception&lt;br /&gt;
  * in the file doc/FLOSS-exception.txt in this software distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/flossexception&lt;br /&gt;
  * &lt;br /&gt;
  * By copying, modifying or distributing this software, you acknowledge&lt;br /&gt;
  * that you have read and understood your obligations described above,&lt;br /&gt;
  * and agree to abide by those obligations.&lt;br /&gt;
  * &lt;br /&gt;
  * ALL LINDEN LAB SOURCE CODE IS PROVIDED &amp;quot;AS IS.&amp;quot; LINDEN LAB MAKES NO&lt;br /&gt;
  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,&lt;br /&gt;
  * COMPLETENESS OR PERFORMANCE.&lt;br /&gt;
  */&lt;br /&gt;
  &lt;br /&gt;
 #include &amp;quot;linden_common.h&amp;quot; &lt;br /&gt;
 #include &amp;quot;llhash.h&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 #include &amp;quot;llmessagethrottle.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;llframetimer.h&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
 // This is used for the stl search_n function.&lt;br /&gt;
  bool eq_message_throttle_entry(LLMessageThrottleEntry a, LLMessageThrottleEntry b)&lt;br /&gt;
  		{ return a.getHash() == b.getHash(); }&lt;br /&gt;
  &lt;br /&gt;
 const U64 SEC_TO_USEC = 1000000;&lt;br /&gt;
 		&lt;br /&gt;
 // How long (in microseconds) each type of message stays in its throttle list.&lt;br /&gt;
 const U64 MAX_MESSAGE_AGE[MTC_EOF] =&lt;br /&gt;
 {&lt;br /&gt;
 	10 * SEC_TO_USEC,	// MTC_VIEWER_ALERT&lt;br /&gt;
 	10 * SEC_TO_USEC	// MTC_AGENT_ALERT&lt;br /&gt;
 };&lt;br /&gt;
  &lt;br /&gt;
 LLMessageThrottle::LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 LLMessageThrottle::~LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 void LLMessageThrottle::pruneEntries()&lt;br /&gt;
 {&lt;br /&gt;
 	// Go through each message category, and prune entries older than max age.&lt;br /&gt;
 	S32 cat;&lt;br /&gt;
 	for (cat = 0; cat &amp;lt; MTC_EOF; cat++)&lt;br /&gt;
 	{&lt;br /&gt;
 		message_list_t* message_list = &amp;amp;(mMessageList[cat]);&lt;br /&gt;
  &lt;br /&gt;
 		// Use a reverse iterator, since entries on the back will be the oldest.&lt;br /&gt;
 		message_list_reverse_iterator_t r_iterator 	= message_list-&amp;gt;rbegin();&lt;br /&gt;
 		message_list_reverse_iterator_t r_last 		= message_list-&amp;gt;rend();&lt;br /&gt;
  &lt;br /&gt;
 		// Look for the first entry younger than the maximum age.&lt;br /&gt;
 		F32 max_age = (F32)MAX_MESSAGE_AGE[cat]; &lt;br /&gt;
 		BOOL found = FALSE;&lt;br /&gt;
 		while (r_iterator != r_last &amp;amp;&amp;amp; !found)&lt;br /&gt;
 		{&lt;br /&gt;
 			if ( LLFrameTimer::getTotalTime() - (*r_iterator).getEntryTime() &amp;lt; max_age )&lt;br /&gt;
 			{&lt;br /&gt;
 				// We found a young enough entry.&lt;br /&gt;
 				found = TRUE;&lt;br /&gt;
  &lt;br /&gt;
 				// Did we find at least one entry to remove?&lt;br /&gt;
 				if (r_iterator != message_list-&amp;gt;rbegin())&lt;br /&gt;
 				{&lt;br /&gt;
 					// Yes, remove it.&lt;br /&gt;
 					message_list-&amp;gt;erase(r_iterator.base(), message_list-&amp;gt;end());&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			else&lt;br /&gt;
 			{&lt;br /&gt;
 				r_iterator++;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
  &lt;br /&gt;
 		// If we didn&#039;t find any entries young enough to keep, remove them all.&lt;br /&gt;
 		if (!found)&lt;br /&gt;
 		{&lt;br /&gt;
 			message_list-&amp;gt;clear();&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 BOOL LLMessageThrottle::addViewerAlert(const LLUUID&amp;amp; to, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_VIEWER_ALERT]);&lt;br /&gt;
  &lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; to &amp;lt;&amp;lt; mesg;&lt;br /&gt;
  &lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
  &lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 	/*&lt;br /&gt;
         * Stefano: i did try using this but did not help: &lt;br /&gt;
 	&amp;lt;message_list_iterator_t,int,LLMessageThrottleEntry,bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;&lt;br /&gt;
 	*/&lt;br /&gt;
 	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(), 1, entry, eq_message_throttle_entry);&lt;br /&gt;
  &lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
   &lt;br /&gt;
 BOOL LLMessageThrottle::addAgentAlert(const LLUUID&amp;amp; agent, const LLUUID&amp;amp; task, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_AGENT_ALERT]);&lt;br /&gt;
  &lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; agent &amp;lt;&amp;lt; task &amp;lt;&amp;lt; mesg;&lt;br /&gt;
  &lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
  &lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 /* stefano i commented the following so to get one only error while debugging */&lt;br /&gt;
 /*	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(), &lt;br /&gt;
                                                      1, entry, eq_message_throttle_entry);    	&lt;br /&gt;
  &lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 	*/&lt;br /&gt;
  &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=35100</id>
		<title>User:Stefano CiscoSystems/Compiling Issues with Vista and MSVS2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=35100"/>
		<updated>2007-10-11T08:39:11Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== could not deduce template argument from &#039;LLMessageThrottleEntry&#039; in llmessagethrottle.cpp ==&lt;br /&gt;
* [VS9PATH]\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
* [VS9PATH]\vc\include\deque(1341) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
* [VS9PATH]\vc\include\algorithm(435) : see reference to function template instantiation &#039;_FwdIt1 std::_Search_n&amp;lt;_FwdIt1,_Diff2,_Ty,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr,std::random_access_iterator_tag)&#039; being compiled&lt;br /&gt;
&lt;br /&gt;
The first error is related to the search_n for the LLMessageThrottleEntry class on line 113 of \indra\llmessage\llmessagethrottle.cpp.&lt;br /&gt;
&lt;br /&gt;
The error happens in [yourpath]\Visual Studio 9.0\vc\include\algorithm, on line 406 (excerpt follows)&lt;br /&gt;
&lt;br /&gt;
  template&amp;lt;class _FwdIt1,&lt;br /&gt;
 	class _Diff2,&lt;br /&gt;
 	class _Ty,&lt;br /&gt;
 	class _Pr&amp;gt; inline&lt;br /&gt;
 	_FwdIt1 _Search_n(_FwdIt1 _First1, _FwdIt1 _Last1,&lt;br /&gt;
 		_Diff2 _Count, const _Ty&amp;amp; _Val, _Pr _Pred, random_access_iterator_tag)&lt;br /&gt;
 	{	// find first _Count * _Val satisfying _Pred, random-access iterators&lt;br /&gt;
 	_DEBUG_RANGE(_First1, _Last1);&lt;br /&gt;
 	_DEBUG_POINTER(_Pred);&lt;br /&gt;
  &lt;br /&gt;
 	if (_Count &amp;lt;= 0)&lt;br /&gt;
 		return (_First1);&lt;br /&gt;
  &lt;br /&gt;
  	_FwdIt1 _Oldfirst1 = _First1;&lt;br /&gt;
 	for (; _Count &amp;lt;= _Last1 - _Oldfirst1; )&lt;br /&gt;
 		{	// enough room, look for a match &lt;br /&gt;
 		if (_Pred(*_First1, _Val))&lt;br /&gt;
 			{	// found part of possible match, check it out&lt;br /&gt;
 			_Diff2 _Count1 = _Count;&lt;br /&gt;
 			_FwdIt1 _Mid1  = _First1;&lt;br /&gt;
  &lt;br /&gt;
 406:			for (; _Oldfirst1 != _First1 &amp;amp;&amp;amp; _First1[-1] == _Val; --_First1)&lt;br /&gt;
 				--_Count1;	// back up over any skipped prefix&lt;br /&gt;
  &lt;br /&gt;
 			if (_Count1 &amp;lt;= _Last1 - _Mid1)&lt;br /&gt;
 				for (; ; )	// enough left, test suffix&lt;br /&gt;
 					if (--_Count1 == 0)&lt;br /&gt;
 						return (_First1);	// found rest of match, report it&lt;br /&gt;
 					else if (!_Pred(*++_Mid1, _Val))&lt;br /&gt;
 						break;	// short match not at end&lt;br /&gt;
  &lt;br /&gt;
 			_Oldfirst1 = ++_Mid1;	// failed match, take small jump&lt;br /&gt;
 			_First1 = _Oldfirst1;&lt;br /&gt;
 			}&lt;br /&gt;
 		else&lt;br /&gt;
 			{	// no match, take big jump and back up as needed&lt;br /&gt;
 			_Oldfirst1 = _First1 + 1;&lt;br /&gt;
 			_First1 += _Count;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	return (_Last1);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
So the problem seems to be the operator == in the equality:&lt;br /&gt;
 _First1[-1] == _Val; &lt;br /&gt;
coming from the search_n operation.&lt;br /&gt;
&lt;br /&gt;
They both evaluate to a &lt;br /&gt;
 const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&lt;br /&gt;
which types are ambiguous for the compiler.&lt;br /&gt;
&lt;br /&gt;
Here is the exact copy of the full compilation error:&lt;br /&gt;
&lt;br /&gt;
 1&amp;gt;------ Build started: Project: llmessage, Configuration: Debug Win32 ------&lt;br /&gt;
 1&amp;gt;Compiling...&lt;br /&gt;
 1&amp;gt;llmessagethrottle.cpp&lt;br /&gt;
 1&amp;gt;c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(134) : warning C4189: &#039;message_list&#039; : local variable is initialized but not referenced&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\deque(1341) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(435) : see reference to function template instantiation &#039;_FwdIt1 std::_Search_n&amp;lt;_FwdIt1,_Diff2,_Ty,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr,std::random_access_iterator_tag)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;        c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(117) : see reference to function template instantiation &#039;_FwdIt1 std::search_n&amp;lt;LLMessageThrottle::message_list_iterator_t,int,LLMessageThrottleEntry,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;,const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\list(1299) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;,const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xtree(1459) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const _Elem *)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(90) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const _Elem *,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const _Elem *&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(80) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(70) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\vector(1309) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;,const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\iterator(266) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;,const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\streambuf(548) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;,const std::allocator&amp;lt;_Other&amp;gt; &amp;amp;) throw()&#039; : could not deduce template argument for &#039;const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xmemory(173) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;,const std::reverse_iterator&amp;lt;_RanIt2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2193) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;,const std::_Revranit&amp;lt;_RanIt2,_Base2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2007) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;,const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\utility(68) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2676: binary &#039;==&#039; : &#039;LLMessageThrottleEntry&#039; does not define this operator or a conversion to a type acceptable to the predefined operator&lt;br /&gt;
 1&amp;gt;Build log was saved at &amp;quot;file://c:\Sources\SecondLife\LindenLabClient\indra\llmessage\Debug\BuildLog.htm&amp;quot;&lt;br /&gt;
 1&amp;gt;llmessage - 14 error(s), 1 warning(s)&lt;br /&gt;
 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========&lt;br /&gt;
&lt;br /&gt;
And this is the content of the file llmessagethrottle.cpp that i am using:&lt;br /&gt;
&lt;br /&gt;
 /** &lt;br /&gt;
  * @file llmessagethrottle.cpp&lt;br /&gt;
  * @brief LLMessageThrottle class used for throttling messages.&lt;br /&gt;
  *&lt;br /&gt;
  * Copyright (c) 2004-2007, Linden Research, Inc.&lt;br /&gt;
  * &lt;br /&gt;
  * Second Life Viewer Source Code&lt;br /&gt;
  * The source code in this file (&amp;quot;Source Code&amp;quot;) is provided by Linden Lab&lt;br /&gt;
  * to you under the terms of the GNU General Public License, version 2.0&lt;br /&gt;
  * (&amp;quot;GPL&amp;quot;), unless you have obtained a separate licensing agreement&lt;br /&gt;
  * (&amp;quot;Other License&amp;quot;), formally executed by you and Linden Lab.  Terms of&lt;br /&gt;
  * the GPL can be found in doc/GPL-license.txt in this distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/gplv2&lt;br /&gt;
  * &lt;br /&gt;
  * There are special exceptions to the terms and conditions of the GPL as&lt;br /&gt;
  * it is applied to this Source Code. View the full text of the exception&lt;br /&gt;
  * in the file doc/FLOSS-exception.txt in this software distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/flossexception&lt;br /&gt;
  * &lt;br /&gt;
  * By copying, modifying or distributing this software, you acknowledge&lt;br /&gt;
  * that you have read and understood your obligations described above,&lt;br /&gt;
  * and agree to abide by those obligations.&lt;br /&gt;
  * &lt;br /&gt;
  * ALL LINDEN LAB SOURCE CODE IS PROVIDED &amp;quot;AS IS.&amp;quot; LINDEN LAB MAKES NO&lt;br /&gt;
  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,&lt;br /&gt;
  * COMPLETENESS OR PERFORMANCE.&lt;br /&gt;
  */&lt;br /&gt;
  &lt;br /&gt;
 #include &amp;quot;linden_common.h&amp;quot; &lt;br /&gt;
 #include &amp;quot;llhash.h&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 #include &amp;quot;llmessagethrottle.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;llframetimer.h&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
 // This is used for the stl search_n function.&lt;br /&gt;
  bool eq_message_throttle_entry(LLMessageThrottleEntry a, LLMessageThrottleEntry b)&lt;br /&gt;
  		{ return a.getHash() == b.getHash(); }&lt;br /&gt;
  &lt;br /&gt;
 const U64 SEC_TO_USEC = 1000000;&lt;br /&gt;
 		&lt;br /&gt;
 // How long (in microseconds) each type of message stays in its throttle list.&lt;br /&gt;
 const U64 MAX_MESSAGE_AGE[MTC_EOF] =&lt;br /&gt;
 {&lt;br /&gt;
 	10 * SEC_TO_USEC,	// MTC_VIEWER_ALERT&lt;br /&gt;
 	10 * SEC_TO_USEC	// MTC_AGENT_ALERT&lt;br /&gt;
 };&lt;br /&gt;
  &lt;br /&gt;
 LLMessageThrottle::LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 LLMessageThrottle::~LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 void LLMessageThrottle::pruneEntries()&lt;br /&gt;
 {&lt;br /&gt;
 	// Go through each message category, and prune entries older than max age.&lt;br /&gt;
 	S32 cat;&lt;br /&gt;
 	for (cat = 0; cat &amp;lt; MTC_EOF; cat++)&lt;br /&gt;
 	{&lt;br /&gt;
 		message_list_t* message_list = &amp;amp;(mMessageList[cat]);&lt;br /&gt;
  &lt;br /&gt;
 		// Use a reverse iterator, since entries on the back will be the oldest.&lt;br /&gt;
 		message_list_reverse_iterator_t r_iterator 	= message_list-&amp;gt;rbegin();&lt;br /&gt;
 		message_list_reverse_iterator_t r_last 		= message_list-&amp;gt;rend();&lt;br /&gt;
  &lt;br /&gt;
 		// Look for the first entry younger than the maximum age.&lt;br /&gt;
 		F32 max_age = (F32)MAX_MESSAGE_AGE[cat]; &lt;br /&gt;
 		BOOL found = FALSE;&lt;br /&gt;
 		while (r_iterator != r_last &amp;amp;&amp;amp; !found)&lt;br /&gt;
 		{&lt;br /&gt;
 			if ( LLFrameTimer::getTotalTime() - (*r_iterator).getEntryTime() &amp;lt; max_age )&lt;br /&gt;
 			{&lt;br /&gt;
 				// We found a young enough entry.&lt;br /&gt;
 				found = TRUE;&lt;br /&gt;
  &lt;br /&gt;
 				// Did we find at least one entry to remove?&lt;br /&gt;
 				if (r_iterator != message_list-&amp;gt;rbegin())&lt;br /&gt;
 				{&lt;br /&gt;
 					// Yes, remove it.&lt;br /&gt;
 					message_list-&amp;gt;erase(r_iterator.base(), message_list-&amp;gt;end());&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			else&lt;br /&gt;
 			{&lt;br /&gt;
 				r_iterator++;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
  &lt;br /&gt;
 		// If we didn&#039;t find any entries young enough to keep, remove them all.&lt;br /&gt;
 		if (!found)&lt;br /&gt;
 		{&lt;br /&gt;
 			message_list-&amp;gt;clear();&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 BOOL LLMessageThrottle::addViewerAlert(const LLUUID&amp;amp; to, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_VIEWER_ALERT]);&lt;br /&gt;
  &lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; to &amp;lt;&amp;lt; mesg;&lt;br /&gt;
  &lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
  &lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 	/*&lt;br /&gt;
         * Stefano: i did try using this but did not help: &lt;br /&gt;
 	&amp;lt;message_list_iterator_t,int,LLMessageThrottleEntry,bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;&lt;br /&gt;
 	*/&lt;br /&gt;
 	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(), 1, entry, eq_message_throttle_entry);&lt;br /&gt;
  &lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
   &lt;br /&gt;
 BOOL LLMessageThrottle::addAgentAlert(const LLUUID&amp;amp; agent, const LLUUID&amp;amp; task, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_AGENT_ALERT]);&lt;br /&gt;
  &lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; agent &amp;lt;&amp;lt; task &amp;lt;&amp;lt; mesg;&lt;br /&gt;
  &lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
  &lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 /* stefano i commented the following so to get one only error while debugging */&lt;br /&gt;
 /*	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(), &lt;br /&gt;
                                                      1, entry, eq_message_throttle_entry);    	&lt;br /&gt;
  &lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 	*/&lt;br /&gt;
  &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=35099</id>
		<title>User:Stefano CiscoSystems/Compiling Issues with Vista and MSVS2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=35099"/>
		<updated>2007-10-11T08:34:14Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== could not deduce template argument from &#039;LLMessageThrottleEntry&#039; in llmessagethrottle.cpp ==&lt;br /&gt;
&lt;br /&gt;
The first error is somehow related to the search_n for the LLMessageThrottleEntry class, but i really cannot decrypt any better the compilation error then knowing the compiler cannot deduce some type.&lt;br /&gt;
&lt;br /&gt;
The error happens in [yourpath]\Visual Studio 9.0\vc\include\algorithm, on line 406 (excerpt follows)&lt;br /&gt;
&lt;br /&gt;
  template&amp;lt;class _FwdIt1,&lt;br /&gt;
 	class _Diff2,&lt;br /&gt;
 	class _Ty,&lt;br /&gt;
 	class _Pr&amp;gt; inline&lt;br /&gt;
 	_FwdIt1 _Search_n(_FwdIt1 _First1, _FwdIt1 _Last1,&lt;br /&gt;
 		_Diff2 _Count, const _Ty&amp;amp; _Val, _Pr _Pred, random_access_iterator_tag)&lt;br /&gt;
 	{	// find first _Count * _Val satisfying _Pred, random-access iterators&lt;br /&gt;
 	_DEBUG_RANGE(_First1, _Last1);&lt;br /&gt;
 	_DEBUG_POINTER(_Pred);&lt;br /&gt;
  &lt;br /&gt;
 	if (_Count &amp;lt;= 0)&lt;br /&gt;
 		return (_First1);&lt;br /&gt;
  &lt;br /&gt;
  	_FwdIt1 _Oldfirst1 = _First1;&lt;br /&gt;
 	for (; _Count &amp;lt;= _Last1 - _Oldfirst1; )&lt;br /&gt;
 		{	// enough room, look for a match &lt;br /&gt;
 		if (_Pred(*_First1, _Val))&lt;br /&gt;
 			{	// found part of possible match, check it out&lt;br /&gt;
 			_Diff2 _Count1 = _Count;&lt;br /&gt;
 			_FwdIt1 _Mid1  = _First1;&lt;br /&gt;
  &lt;br /&gt;
 406:			for (; _Oldfirst1 != _First1 &amp;amp;&amp;amp; _First1[-1] == _Val; --_First1)&lt;br /&gt;
 				--_Count1;	// back up over any skipped prefix&lt;br /&gt;
  &lt;br /&gt;
 			if (_Count1 &amp;lt;= _Last1 - _Mid1)&lt;br /&gt;
 				for (; ; )	// enough left, test suffix&lt;br /&gt;
 					if (--_Count1 == 0)&lt;br /&gt;
 						return (_First1);	// found rest of match, report it&lt;br /&gt;
 					else if (!_Pred(*++_Mid1, _Val))&lt;br /&gt;
 						break;	// short match not at end&lt;br /&gt;
  &lt;br /&gt;
 			_Oldfirst1 = ++_Mid1;	// failed match, take small jump&lt;br /&gt;
 			_First1 = _Oldfirst1;&lt;br /&gt;
 			}&lt;br /&gt;
 		else&lt;br /&gt;
 			{	// no match, take big jump and back up as needed&lt;br /&gt;
 			_Oldfirst1 = _First1 + 1;&lt;br /&gt;
 			_First1 += _Count;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	return (_Last1);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
So the problem seems to be the operator == in the equality:&lt;br /&gt;
 _First1[-1] == _Val; &lt;br /&gt;
coming from the search_n operation.&lt;br /&gt;
&lt;br /&gt;
They both evaluate to a &lt;br /&gt;
 const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&lt;br /&gt;
which types are ambiguous for the compiler.&lt;br /&gt;
&lt;br /&gt;
Here is the exact copy of the full compilation error:&lt;br /&gt;
&lt;br /&gt;
 1&amp;gt;------ Build started: Project: llmessage, Configuration: Debug Win32 ------&lt;br /&gt;
 1&amp;gt;Compiling...&lt;br /&gt;
 1&amp;gt;llmessagethrottle.cpp&lt;br /&gt;
 1&amp;gt;c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(134) : warning C4189: &#039;message_list&#039; : local variable is initialized but not referenced&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\deque(1341) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(435) : see reference to function template instantiation &#039;_FwdIt1 std::_Search_n&amp;lt;_FwdIt1,_Diff2,_Ty,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr,std::random_access_iterator_tag)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;        c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(117) : see reference to function template instantiation &#039;_FwdIt1 std::search_n&amp;lt;LLMessageThrottle::message_list_iterator_t,int,LLMessageThrottleEntry,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;,const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\list(1299) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;,const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xtree(1459) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const _Elem *)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(90) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const _Elem *,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const _Elem *&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(80) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(70) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\vector(1309) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;,const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\iterator(266) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;,const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\streambuf(548) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;,const std::allocator&amp;lt;_Other&amp;gt; &amp;amp;) throw()&#039; : could not deduce template argument for &#039;const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xmemory(173) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;,const std::reverse_iterator&amp;lt;_RanIt2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2193) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;,const std::_Revranit&amp;lt;_RanIt2,_Base2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2007) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;,const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\utility(68) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2676: binary &#039;==&#039; : &#039;LLMessageThrottleEntry&#039; does not define this operator or a conversion to a type acceptable to the predefined operator&lt;br /&gt;
 1&amp;gt;Build log was saved at &amp;quot;file://c:\Sources\SecondLife\LindenLabClient\indra\llmessage\Debug\BuildLog.htm&amp;quot;&lt;br /&gt;
 1&amp;gt;llmessage - 14 error(s), 1 warning(s)&lt;br /&gt;
 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========&lt;br /&gt;
&lt;br /&gt;
And this is the content of the file llmessagethrottle.cpp that i am using:&lt;br /&gt;
&lt;br /&gt;
 /** &lt;br /&gt;
  * @file llmessagethrottle.cpp&lt;br /&gt;
  * @brief LLMessageThrottle class used for throttling messages.&lt;br /&gt;
  *&lt;br /&gt;
  * Copyright (c) 2004-2007, Linden Research, Inc.&lt;br /&gt;
  * &lt;br /&gt;
  * Second Life Viewer Source Code&lt;br /&gt;
  * The source code in this file (&amp;quot;Source Code&amp;quot;) is provided by Linden Lab&lt;br /&gt;
  * to you under the terms of the GNU General Public License, version 2.0&lt;br /&gt;
  * (&amp;quot;GPL&amp;quot;), unless you have obtained a separate licensing agreement&lt;br /&gt;
  * (&amp;quot;Other License&amp;quot;), formally executed by you and Linden Lab.  Terms of&lt;br /&gt;
  * the GPL can be found in doc/GPL-license.txt in this distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/gplv2&lt;br /&gt;
  * &lt;br /&gt;
  * There are special exceptions to the terms and conditions of the GPL as&lt;br /&gt;
  * it is applied to this Source Code. View the full text of the exception&lt;br /&gt;
  * in the file doc/FLOSS-exception.txt in this software distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/flossexception&lt;br /&gt;
  * &lt;br /&gt;
  * By copying, modifying or distributing this software, you acknowledge&lt;br /&gt;
  * that you have read and understood your obligations described above,&lt;br /&gt;
  * and agree to abide by those obligations.&lt;br /&gt;
  * &lt;br /&gt;
  * ALL LINDEN LAB SOURCE CODE IS PROVIDED &amp;quot;AS IS.&amp;quot; LINDEN LAB MAKES NO&lt;br /&gt;
  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,&lt;br /&gt;
  * COMPLETENESS OR PERFORMANCE.&lt;br /&gt;
  */&lt;br /&gt;
  &lt;br /&gt;
 #include &amp;quot;linden_common.h&amp;quot; &lt;br /&gt;
 #include &amp;quot;llhash.h&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 #include &amp;quot;llmessagethrottle.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;llframetimer.h&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
 // This is used for the stl search_n function.&lt;br /&gt;
  bool eq_message_throttle_entry(LLMessageThrottleEntry a, LLMessageThrottleEntry b)&lt;br /&gt;
  		{ return a.getHash() == b.getHash(); }&lt;br /&gt;
  &lt;br /&gt;
 const U64 SEC_TO_USEC = 1000000;&lt;br /&gt;
 		&lt;br /&gt;
 // How long (in microseconds) each type of message stays in its throttle list.&lt;br /&gt;
 const U64 MAX_MESSAGE_AGE[MTC_EOF] =&lt;br /&gt;
 {&lt;br /&gt;
 	10 * SEC_TO_USEC,	// MTC_VIEWER_ALERT&lt;br /&gt;
 	10 * SEC_TO_USEC	// MTC_AGENT_ALERT&lt;br /&gt;
 };&lt;br /&gt;
  &lt;br /&gt;
 LLMessageThrottle::LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 LLMessageThrottle::~LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 void LLMessageThrottle::pruneEntries()&lt;br /&gt;
 {&lt;br /&gt;
 	// Go through each message category, and prune entries older than max age.&lt;br /&gt;
 	S32 cat;&lt;br /&gt;
 	for (cat = 0; cat &amp;lt; MTC_EOF; cat++)&lt;br /&gt;
 	{&lt;br /&gt;
 		message_list_t* message_list = &amp;amp;(mMessageList[cat]);&lt;br /&gt;
  &lt;br /&gt;
 		// Use a reverse iterator, since entries on the back will be the oldest.&lt;br /&gt;
 		message_list_reverse_iterator_t r_iterator 	= message_list-&amp;gt;rbegin();&lt;br /&gt;
 		message_list_reverse_iterator_t r_last 		= message_list-&amp;gt;rend();&lt;br /&gt;
  &lt;br /&gt;
 		// Look for the first entry younger than the maximum age.&lt;br /&gt;
 		F32 max_age = (F32)MAX_MESSAGE_AGE[cat]; &lt;br /&gt;
 		BOOL found = FALSE;&lt;br /&gt;
 		while (r_iterator != r_last &amp;amp;&amp;amp; !found)&lt;br /&gt;
 		{&lt;br /&gt;
 			if ( LLFrameTimer::getTotalTime() - (*r_iterator).getEntryTime() &amp;lt; max_age )&lt;br /&gt;
 			{&lt;br /&gt;
 				// We found a young enough entry.&lt;br /&gt;
 				found = TRUE;&lt;br /&gt;
  &lt;br /&gt;
 				// Did we find at least one entry to remove?&lt;br /&gt;
 				if (r_iterator != message_list-&amp;gt;rbegin())&lt;br /&gt;
 				{&lt;br /&gt;
 					// Yes, remove it.&lt;br /&gt;
 					message_list-&amp;gt;erase(r_iterator.base(), message_list-&amp;gt;end());&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			else&lt;br /&gt;
 			{&lt;br /&gt;
 				r_iterator++;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
  &lt;br /&gt;
 		// If we didn&#039;t find any entries young enough to keep, remove them all.&lt;br /&gt;
 		if (!found)&lt;br /&gt;
 		{&lt;br /&gt;
 			message_list-&amp;gt;clear();&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 BOOL LLMessageThrottle::addViewerAlert(const LLUUID&amp;amp; to, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_VIEWER_ALERT]);&lt;br /&gt;
  &lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; to &amp;lt;&amp;lt; mesg;&lt;br /&gt;
  &lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
  &lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 	/*&lt;br /&gt;
         * Stefano: i did try using this but did not help: &lt;br /&gt;
 	&amp;lt;message_list_iterator_t,int,LLMessageThrottleEntry,bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;&lt;br /&gt;
 	*/&lt;br /&gt;
 	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(), 1, entry, eq_message_throttle_entry);&lt;br /&gt;
  &lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
   &lt;br /&gt;
 BOOL LLMessageThrottle::addAgentAlert(const LLUUID&amp;amp; agent, const LLUUID&amp;amp; task, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_AGENT_ALERT]);&lt;br /&gt;
  &lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; agent &amp;lt;&amp;lt; task &amp;lt;&amp;lt; mesg;&lt;br /&gt;
  &lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
  &lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 /* stefano i commented the following so to get one only error while debugging */&lt;br /&gt;
 /*	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(), &lt;br /&gt;
                                                      1, entry, eq_message_throttle_entry);    	&lt;br /&gt;
  &lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 	*/&lt;br /&gt;
  &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems&amp;diff=35097</id>
		<title>User:Stefano CiscoSystems</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems&amp;diff=35097"/>
		<updated>2007-10-11T08:26:28Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Placeholder only for the moment.&lt;br /&gt;
&lt;br /&gt;
I work in the Networked Virtual Environments group for the Cisco Technology Center.&lt;br /&gt;
&lt;br /&gt;
My [[Compiling Issues with Vista/MSVS2008]]&lt;br /&gt;
&lt;br /&gt;
[[User:Stefano_CiscoSystems|Stefano Crosta]]&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=35004</id>
		<title>User:Stefano CiscoSystems/Compiling Issues with Vista and MSVS2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=35004"/>
		<updated>2007-10-10T16:10:48Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: /* could not deduce template argument from &amp;#039;LLMessageThrottleEntry&amp;#039; in llmessagethrottle.cpp */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== could not deduce template argument from &#039;LLMessageThrottleEntry&#039; in llmessagethrottle.cpp ==&lt;br /&gt;
&lt;br /&gt;
The first error is somehow related to the search_n for the LLMessageThrottleEntry class, but i really cannot decrypt any better the compilation error then knowing the compiler cannot deduce some type.&lt;br /&gt;
&lt;br /&gt;
Here is the exact copy of the full compilation error:&lt;br /&gt;
&lt;br /&gt;
 1&amp;gt;------ Build started: Project: llmessage, Configuration: Debug Win32 ------&lt;br /&gt;
 1&amp;gt;Compiling...&lt;br /&gt;
 1&amp;gt;llmessagethrottle.cpp&lt;br /&gt;
 1&amp;gt;c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(134) : warning C4189: &#039;message_list&#039; : local variable is initialized but not referenced&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\deque(1341) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(435) : see reference to function template instantiation &#039;_FwdIt1 std::_Search_n&amp;lt;_FwdIt1,_Diff2,_Ty,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr,std::random_access_iterator_tag)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;        c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(117) : see reference to function template instantiation &#039;_FwdIt1 std::search_n&amp;lt;LLMessageThrottle::message_list_iterator_t,int,LLMessageThrottleEntry,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;,const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\list(1299) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;,const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xtree(1459) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const _Elem *)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(90) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const _Elem *,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const _Elem *&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(80) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(70) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\vector(1309) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;,const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\iterator(266) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;,const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\streambuf(548) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;,const std::allocator&amp;lt;_Other&amp;gt; &amp;amp;) throw()&#039; : could not deduce template argument for &#039;const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xmemory(173) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;,const std::reverse_iterator&amp;lt;_RanIt2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2193) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;,const std::_Revranit&amp;lt;_RanIt2,_Base2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2007) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;,const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\utility(68) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2676: binary &#039;==&#039; : &#039;LLMessageThrottleEntry&#039; does not define this operator or a conversion to a type acceptable to the predefined operator&lt;br /&gt;
 1&amp;gt;Build log was saved at &amp;quot;file://c:\Sources\SecondLife\LindenLabClient\indra\llmessage\Debug\BuildLog.htm&amp;quot;&lt;br /&gt;
 1&amp;gt;llmessage - 14 error(s), 1 warning(s)&lt;br /&gt;
 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========&lt;br /&gt;
&lt;br /&gt;
And this is the content of the file llmessagethrottle.cpp that i am using:&lt;br /&gt;
&lt;br /&gt;
 /** &lt;br /&gt;
  * @file llmessagethrottle.cpp&lt;br /&gt;
  * @brief LLMessageThrottle class used for throttling messages.&lt;br /&gt;
  *&lt;br /&gt;
  * Copyright (c) 2004-2007, Linden Research, Inc.&lt;br /&gt;
  * &lt;br /&gt;
  * Second Life Viewer Source Code&lt;br /&gt;
  * The source code in this file (&amp;quot;Source Code&amp;quot;) is provided by Linden Lab&lt;br /&gt;
  * to you under the terms of the GNU General Public License, version 2.0&lt;br /&gt;
  * (&amp;quot;GPL&amp;quot;), unless you have obtained a separate licensing agreement&lt;br /&gt;
  * (&amp;quot;Other License&amp;quot;), formally executed by you and Linden Lab.  Terms of&lt;br /&gt;
  * the GPL can be found in doc/GPL-license.txt in this distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/gplv2&lt;br /&gt;
  * &lt;br /&gt;
  * There are special exceptions to the terms and conditions of the GPL as&lt;br /&gt;
  * it is applied to this Source Code. View the full text of the exception&lt;br /&gt;
  * in the file doc/FLOSS-exception.txt in this software distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/flossexception&lt;br /&gt;
  * &lt;br /&gt;
  * By copying, modifying or distributing this software, you acknowledge&lt;br /&gt;
  * that you have read and understood your obligations described above,&lt;br /&gt;
  * and agree to abide by those obligations.&lt;br /&gt;
  * &lt;br /&gt;
  * ALL LINDEN LAB SOURCE CODE IS PROVIDED &amp;quot;AS IS.&amp;quot; LINDEN LAB MAKES NO&lt;br /&gt;
  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,&lt;br /&gt;
  * COMPLETENESS OR PERFORMANCE.&lt;br /&gt;
  */&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;linden_common.h&amp;quot; &lt;br /&gt;
 #include &amp;quot;llhash.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;llmessagethrottle.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;llframetimer.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 // This is used for the stl search_n function.&lt;br /&gt;
  bool eq_message_throttle_entry(LLMessageThrottleEntry a, LLMessageThrottleEntry b)&lt;br /&gt;
  		{ return a.getHash() == b.getHash(); }&lt;br /&gt;
&lt;br /&gt;
 const U64 SEC_TO_USEC = 1000000;&lt;br /&gt;
 		&lt;br /&gt;
 // How long (in microseconds) each type of message stays in its throttle list.&lt;br /&gt;
 const U64 MAX_MESSAGE_AGE[MTC_EOF] =&lt;br /&gt;
 {&lt;br /&gt;
 	10 * SEC_TO_USEC,	// MTC_VIEWER_ALERT&lt;br /&gt;
 	10 * SEC_TO_USEC	// MTC_AGENT_ALERT&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 LLMessageThrottle::LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 LLMessageThrottle::~LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void LLMessageThrottle::pruneEntries()&lt;br /&gt;
 {&lt;br /&gt;
 	// Go through each message category, and prune entries older than max age.&lt;br /&gt;
 	S32 cat;&lt;br /&gt;
 	for (cat = 0; cat &amp;lt; MTC_EOF; cat++)&lt;br /&gt;
 	{&lt;br /&gt;
 		message_list_t* message_list = &amp;amp;(mMessageList[cat]);&lt;br /&gt;
&lt;br /&gt;
 		// Use a reverse iterator, since entries on the back will be the oldest.&lt;br /&gt;
 		message_list_reverse_iterator_t r_iterator 	= message_list-&amp;gt;rbegin();&lt;br /&gt;
 		message_list_reverse_iterator_t r_last 		= message_list-&amp;gt;rend();&lt;br /&gt;
&lt;br /&gt;
 		// Look for the first entry younger than the maximum age.&lt;br /&gt;
 		F32 max_age = (F32)MAX_MESSAGE_AGE[cat]; &lt;br /&gt;
 		BOOL found = FALSE;&lt;br /&gt;
 		while (r_iterator != r_last &amp;amp;&amp;amp; !found)&lt;br /&gt;
 		{&lt;br /&gt;
 			if ( LLFrameTimer::getTotalTime() - (*r_iterator).getEntryTime() &amp;lt; max_age )&lt;br /&gt;
 			{&lt;br /&gt;
 				// We found a young enough entry.&lt;br /&gt;
 				found = TRUE;&lt;br /&gt;
&lt;br /&gt;
 				// Did we find at least one entry to remove?&lt;br /&gt;
 				if (r_iterator != message_list-&amp;gt;rbegin())&lt;br /&gt;
 				{&lt;br /&gt;
 					// Yes, remove it.&lt;br /&gt;
 					message_list-&amp;gt;erase(r_iterator.base(), message_list-&amp;gt;end());&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			else&lt;br /&gt;
 			{&lt;br /&gt;
 				r_iterator++;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
&lt;br /&gt;
 		// If we didn&#039;t find any entries young enough to keep, remove them all.&lt;br /&gt;
 		if (!found)&lt;br /&gt;
 		{&lt;br /&gt;
 			message_list-&amp;gt;clear();&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 BOOL LLMessageThrottle::addViewerAlert(const LLUUID&amp;amp; to, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_VIEWER_ALERT]);&lt;br /&gt;
&lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; to &amp;lt;&amp;lt; mesg;&lt;br /&gt;
&lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
&lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 	/*&lt;br /&gt;
         * Stefano: i did try using this but did not help: &lt;br /&gt;
 	&amp;lt;message_list_iterator_t,int,LLMessageThrottleEntry,bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;&lt;br /&gt;
 	*/&lt;br /&gt;
 	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(), 1, entry, eq_message_throttle_entry);&lt;br /&gt;
&lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 BOOL LLMessageThrottle::addAgentAlert(const LLUUID&amp;amp; agent, const LLUUID&amp;amp; task, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_AGENT_ALERT]);&lt;br /&gt;
&lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; agent &amp;lt;&amp;lt; task &amp;lt;&amp;lt; mesg;&lt;br /&gt;
&lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
&lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 /* stefano i commented the following so to get one only error while debugging */&lt;br /&gt;
 /*	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(),&lt;br /&gt;
 												  1, entry, eq_message_throttle_entry);&lt;br /&gt;
  	&lt;br /&gt;
&lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 	*/&lt;br /&gt;
&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=35002</id>
		<title>User:Stefano CiscoSystems/Compiling Issues with Vista and MSVS2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=35002"/>
		<updated>2007-10-10T15:51:57Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== could not deduce template argument from &#039;LLMessageThrottleEntry&#039; in llmessagethrottle.cpp ==&lt;br /&gt;
&lt;br /&gt;
The error is somehow related to the LLMessageThrottleEntry class, but i really cannot decrypt any better the compilation error.&lt;br /&gt;
&lt;br /&gt;
Here is the exact copy of the full compilation error:&lt;br /&gt;
&lt;br /&gt;
 1&amp;gt;------ Build started: Project: llmessage, Configuration: Debug Win32 ------&lt;br /&gt;
 1&amp;gt;Compiling...&lt;br /&gt;
 1&amp;gt;llmessagethrottle.cpp&lt;br /&gt;
 1&amp;gt;c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(134) : warning C4189: &#039;message_list&#039; : local variable is initialized but not referenced&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\deque(1341) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(435) : see reference to function template instantiation &#039;_FwdIt1 std::_Search_n&amp;lt;_FwdIt1,_Diff2,_Ty,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr,std::random_access_iterator_tag)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;        c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(117) : see reference to function template instantiation &#039;_FwdIt1 std::search_n&amp;lt;LLMessageThrottle::message_list_iterator_t,int,LLMessageThrottleEntry,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;,const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\list(1299) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;,const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xtree(1459) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const _Elem *)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(90) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const _Elem *,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const _Elem *&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(80) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(70) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\vector(1309) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;,const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\iterator(266) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;,const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\streambuf(548) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;,const std::allocator&amp;lt;_Other&amp;gt; &amp;amp;) throw()&#039; : could not deduce template argument for &#039;const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xmemory(173) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;,const std::reverse_iterator&amp;lt;_RanIt2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2193) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;,const std::_Revranit&amp;lt;_RanIt2,_Base2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2007) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;,const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\utility(68) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2676: binary &#039;==&#039; : &#039;LLMessageThrottleEntry&#039; does not define this operator or a conversion to a type acceptable to the predefined operator&lt;br /&gt;
 1&amp;gt;Build log was saved at &amp;quot;file://c:\Sources\SecondLife\LindenLabClient\indra\llmessage\Debug\BuildLog.htm&amp;quot;&lt;br /&gt;
 1&amp;gt;llmessage - 14 error(s), 1 warning(s)&lt;br /&gt;
 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========&lt;br /&gt;
&lt;br /&gt;
And this is the content of the file llmessagethrottle.cpp that i am using:&lt;br /&gt;
&lt;br /&gt;
 /** &lt;br /&gt;
  * @file llmessagethrottle.cpp&lt;br /&gt;
  * @brief LLMessageThrottle class used for throttling messages.&lt;br /&gt;
  *&lt;br /&gt;
  * Copyright (c) 2004-2007, Linden Research, Inc.&lt;br /&gt;
  * &lt;br /&gt;
  * Second Life Viewer Source Code&lt;br /&gt;
  * The source code in this file (&amp;quot;Source Code&amp;quot;) is provided by Linden Lab&lt;br /&gt;
  * to you under the terms of the GNU General Public License, version 2.0&lt;br /&gt;
  * (&amp;quot;GPL&amp;quot;), unless you have obtained a separate licensing agreement&lt;br /&gt;
  * (&amp;quot;Other License&amp;quot;), formally executed by you and Linden Lab.  Terms of&lt;br /&gt;
  * the GPL can be found in doc/GPL-license.txt in this distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/gplv2&lt;br /&gt;
  * &lt;br /&gt;
  * There are special exceptions to the terms and conditions of the GPL as&lt;br /&gt;
  * it is applied to this Source Code. View the full text of the exception&lt;br /&gt;
  * in the file doc/FLOSS-exception.txt in this software distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/flossexception&lt;br /&gt;
  * &lt;br /&gt;
  * By copying, modifying or distributing this software, you acknowledge&lt;br /&gt;
  * that you have read and understood your obligations described above,&lt;br /&gt;
  * and agree to abide by those obligations.&lt;br /&gt;
  * &lt;br /&gt;
  * ALL LINDEN LAB SOURCE CODE IS PROVIDED &amp;quot;AS IS.&amp;quot; LINDEN LAB MAKES NO&lt;br /&gt;
  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,&lt;br /&gt;
  * COMPLETENESS OR PERFORMANCE.&lt;br /&gt;
  */&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;linden_common.h&amp;quot; &lt;br /&gt;
 #include &amp;quot;llhash.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;llmessagethrottle.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;llframetimer.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 // This is used for the stl search_n function.&lt;br /&gt;
  bool eq_message_throttle_entry(LLMessageThrottleEntry a, LLMessageThrottleEntry b)&lt;br /&gt;
  		{ return a.getHash() == b.getHash(); }&lt;br /&gt;
&lt;br /&gt;
 const U64 SEC_TO_USEC = 1000000;&lt;br /&gt;
 		&lt;br /&gt;
 // How long (in microseconds) each type of message stays in its throttle list.&lt;br /&gt;
 const U64 MAX_MESSAGE_AGE[MTC_EOF] =&lt;br /&gt;
 {&lt;br /&gt;
 	10 * SEC_TO_USEC,	// MTC_VIEWER_ALERT&lt;br /&gt;
 	10 * SEC_TO_USEC	// MTC_AGENT_ALERT&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 LLMessageThrottle::LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 LLMessageThrottle::~LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void LLMessageThrottle::pruneEntries()&lt;br /&gt;
 {&lt;br /&gt;
 	// Go through each message category, and prune entries older than max age.&lt;br /&gt;
 	S32 cat;&lt;br /&gt;
 	for (cat = 0; cat &amp;lt; MTC_EOF; cat++)&lt;br /&gt;
 	{&lt;br /&gt;
 		message_list_t* message_list = &amp;amp;(mMessageList[cat]);&lt;br /&gt;
&lt;br /&gt;
 		// Use a reverse iterator, since entries on the back will be the oldest.&lt;br /&gt;
 		message_list_reverse_iterator_t r_iterator 	= message_list-&amp;gt;rbegin();&lt;br /&gt;
 		message_list_reverse_iterator_t r_last 		= message_list-&amp;gt;rend();&lt;br /&gt;
&lt;br /&gt;
 		// Look for the first entry younger than the maximum age.&lt;br /&gt;
 		F32 max_age = (F32)MAX_MESSAGE_AGE[cat]; &lt;br /&gt;
 		BOOL found = FALSE;&lt;br /&gt;
 		while (r_iterator != r_last &amp;amp;&amp;amp; !found)&lt;br /&gt;
 		{&lt;br /&gt;
 			if ( LLFrameTimer::getTotalTime() - (*r_iterator).getEntryTime() &amp;lt; max_age )&lt;br /&gt;
 			{&lt;br /&gt;
 				// We found a young enough entry.&lt;br /&gt;
 				found = TRUE;&lt;br /&gt;
&lt;br /&gt;
 				// Did we find at least one entry to remove?&lt;br /&gt;
 				if (r_iterator != message_list-&amp;gt;rbegin())&lt;br /&gt;
 				{&lt;br /&gt;
 					// Yes, remove it.&lt;br /&gt;
 					message_list-&amp;gt;erase(r_iterator.base(), message_list-&amp;gt;end());&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			else&lt;br /&gt;
 			{&lt;br /&gt;
 				r_iterator++;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
&lt;br /&gt;
 		// If we didn&#039;t find any entries young enough to keep, remove them all.&lt;br /&gt;
 		if (!found)&lt;br /&gt;
 		{&lt;br /&gt;
 			message_list-&amp;gt;clear();&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 BOOL LLMessageThrottle::addViewerAlert(const LLUUID&amp;amp; to, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_VIEWER_ALERT]);&lt;br /&gt;
&lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; to &amp;lt;&amp;lt; mesg;&lt;br /&gt;
&lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
&lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 	/*&lt;br /&gt;
         * Stefano: i did try using this but did not help: &lt;br /&gt;
 	&amp;lt;message_list_iterator_t,int,LLMessageThrottleEntry,bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;&lt;br /&gt;
 	*/&lt;br /&gt;
 	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(), 1, entry, eq_message_throttle_entry);&lt;br /&gt;
&lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 BOOL LLMessageThrottle::addAgentAlert(const LLUUID&amp;amp; agent, const LLUUID&amp;amp; task, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_AGENT_ALERT]);&lt;br /&gt;
&lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; agent &amp;lt;&amp;lt; task &amp;lt;&amp;lt; mesg;&lt;br /&gt;
&lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
&lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 /* stefano i commented the following so to get one only error while debugging */&lt;br /&gt;
 /*	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(),&lt;br /&gt;
 												  1, entry, eq_message_throttle_entry);&lt;br /&gt;
  	&lt;br /&gt;
&lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 	*/&lt;br /&gt;
&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=34999</id>
		<title>User:Stefano CiscoSystems/Compiling Issues with Vista and MSVS2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems/Compiling_Issues_with_Vista_and_MSVS2008&amp;diff=34999"/>
		<updated>2007-10-10T15:49:57Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: New page: Here is the exact copy of the full compilation error:   1&amp;gt;------ Build started: Project: llmessage, Configuration: Debug Win32 ------  1&amp;gt;Compiling...  1&amp;gt;llmessagethrottle.cpp  1&amp;gt;c:\sources...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is the exact copy of the full compilation error:&lt;br /&gt;
&lt;br /&gt;
 1&amp;gt;------ Build started: Project: llmessage, Configuration: Debug Win32 ------&lt;br /&gt;
 1&amp;gt;Compiling...&lt;br /&gt;
 1&amp;gt;llmessagethrottle.cpp&lt;br /&gt;
 1&amp;gt;c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(134) : warning C4189: &#039;message_list&#039; : local variable is initialized but not referenced&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::deque&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\deque(1341) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(435) : see reference to function template instantiation &#039;_FwdIt1 std::_Search_n&amp;lt;_FwdIt1,_Diff2,_Ty,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr,std::random_access_iterator_tag)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;        c:\sources\secondlife\lindenlabclient\indra\llmessage\llmessagethrottle.cpp(117) : see reference to function template instantiation &#039;_FwdIt1 std::search_n&amp;lt;LLMessageThrottle::message_list_iterator_t,int,LLMessageThrottleEntry,bool(__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;(_FwdIt1,_FwdIt1,_Diff2,const _Ty &amp;amp;,_Pr)&#039; being compiled&lt;br /&gt;
 1&amp;gt;        with&lt;br /&gt;
 1&amp;gt;        [&lt;br /&gt;
 1&amp;gt;            _FwdIt1=LLMessageThrottle::message_list_iterator_t,&lt;br /&gt;
 1&amp;gt;            _Diff2=int,&lt;br /&gt;
 1&amp;gt;            _Ty=LLMessageThrottleEntry,&lt;br /&gt;
 1&amp;gt;            _Pr=bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&lt;br /&gt;
 1&amp;gt;        ]&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;,const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::list&amp;lt;_Ty,_Ax&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\list(1299) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;,const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Tree&amp;lt;_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xtree(1459) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const _Elem *)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(90) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const _Elem *,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const _Elem *&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(80) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;,const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::basic_string&amp;lt;_Elem,_Traits,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\string(70) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;,const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::vector&amp;lt;_Ty,_Alloc&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\vector(1309) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;,const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istream_iterator&amp;lt;_Ty,_Elem,_Traits,_Diff&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\iterator(266) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;,const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::istreambuf_iterator&amp;lt;_Elem,_Traits&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\streambuf(548) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;,const std::allocator&amp;lt;_Other&amp;gt; &amp;amp;) throw()&#039; : could not deduce template argument for &#039;const std::allocator&amp;lt;_Ty&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xmemory(173) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;,const std::reverse_iterator&amp;lt;_RanIt2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::reverse_iterator&amp;lt;_RanIt&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2193) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;,const std::_Revranit&amp;lt;_RanIt2,_Base2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::_Revranit&amp;lt;_RanIt,_Base&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\xutility(2007) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2784: &#039;bool std::operator ==(const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;,const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;)&#039; : could not deduce template argument for &#039;const std::pair&amp;lt;_Ty1,_Ty2&amp;gt; &amp;amp;&#039; from &#039;LLMessageThrottleEntry&#039;&lt;br /&gt;
 1&amp;gt;        c:\program files\development\microsoft visual studio 9.0\vc\include\utility(68) : see declaration of &#039;std::operator ==&#039;&lt;br /&gt;
 1&amp;gt;c:\program files\development\microsoft visual studio 9.0\vc\include\algorithm(406) : error C2676: binary &#039;==&#039; : &#039;LLMessageThrottleEntry&#039; does not define this operator or a conversion to a type acceptable to the predefined operator&lt;br /&gt;
 1&amp;gt;Build log was saved at &amp;quot;file://c:\Sources\SecondLife\LindenLabClient\indra\llmessage\Debug\BuildLog.htm&amp;quot;&lt;br /&gt;
 1&amp;gt;llmessage - 14 error(s), 1 warning(s)&lt;br /&gt;
 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========&lt;br /&gt;
&lt;br /&gt;
And this is the content of the file llmessagethrottle.cpp that i am using:&lt;br /&gt;
&lt;br /&gt;
 /** &lt;br /&gt;
  * @file llmessagethrottle.cpp&lt;br /&gt;
  * @brief LLMessageThrottle class used for throttling messages.&lt;br /&gt;
  *&lt;br /&gt;
  * Copyright (c) 2004-2007, Linden Research, Inc.&lt;br /&gt;
  * &lt;br /&gt;
  * Second Life Viewer Source Code&lt;br /&gt;
  * The source code in this file (&amp;quot;Source Code&amp;quot;) is provided by Linden Lab&lt;br /&gt;
  * to you under the terms of the GNU General Public License, version 2.0&lt;br /&gt;
  * (&amp;quot;GPL&amp;quot;), unless you have obtained a separate licensing agreement&lt;br /&gt;
  * (&amp;quot;Other License&amp;quot;), formally executed by you and Linden Lab.  Terms of&lt;br /&gt;
  * the GPL can be found in doc/GPL-license.txt in this distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/gplv2&lt;br /&gt;
  * &lt;br /&gt;
  * There are special exceptions to the terms and conditions of the GPL as&lt;br /&gt;
  * it is applied to this Source Code. View the full text of the exception&lt;br /&gt;
  * in the file doc/FLOSS-exception.txt in this software distribution, or&lt;br /&gt;
  * online at http://secondlife.com/developers/opensource/flossexception&lt;br /&gt;
  * &lt;br /&gt;
  * By copying, modifying or distributing this software, you acknowledge&lt;br /&gt;
  * that you have read and understood your obligations described above,&lt;br /&gt;
  * and agree to abide by those obligations.&lt;br /&gt;
  * &lt;br /&gt;
  * ALL LINDEN LAB SOURCE CODE IS PROVIDED &amp;quot;AS IS.&amp;quot; LINDEN LAB MAKES NO&lt;br /&gt;
  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,&lt;br /&gt;
  * COMPLETENESS OR PERFORMANCE.&lt;br /&gt;
  */&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;linden_common.h&amp;quot; &lt;br /&gt;
 #include &amp;quot;llhash.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;llmessagethrottle.h&amp;quot;&lt;br /&gt;
 #include &amp;quot;llframetimer.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 // This is used for the stl search_n function.&lt;br /&gt;
  bool eq_message_throttle_entry(LLMessageThrottleEntry a, LLMessageThrottleEntry b)&lt;br /&gt;
  		{ return a.getHash() == b.getHash(); }&lt;br /&gt;
&lt;br /&gt;
 const U64 SEC_TO_USEC = 1000000;&lt;br /&gt;
 		&lt;br /&gt;
 // How long (in microseconds) each type of message stays in its throttle list.&lt;br /&gt;
 const U64 MAX_MESSAGE_AGE[MTC_EOF] =&lt;br /&gt;
 {&lt;br /&gt;
 	10 * SEC_TO_USEC,	// MTC_VIEWER_ALERT&lt;br /&gt;
 	10 * SEC_TO_USEC	// MTC_AGENT_ALERT&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 LLMessageThrottle::LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 LLMessageThrottle::~LLMessageThrottle()&lt;br /&gt;
 {&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void LLMessageThrottle::pruneEntries()&lt;br /&gt;
 {&lt;br /&gt;
 	// Go through each message category, and prune entries older than max age.&lt;br /&gt;
 	S32 cat;&lt;br /&gt;
 	for (cat = 0; cat &amp;lt; MTC_EOF; cat++)&lt;br /&gt;
 	{&lt;br /&gt;
 		message_list_t* message_list = &amp;amp;(mMessageList[cat]);&lt;br /&gt;
&lt;br /&gt;
 		// Use a reverse iterator, since entries on the back will be the oldest.&lt;br /&gt;
 		message_list_reverse_iterator_t r_iterator 	= message_list-&amp;gt;rbegin();&lt;br /&gt;
 		message_list_reverse_iterator_t r_last 		= message_list-&amp;gt;rend();&lt;br /&gt;
&lt;br /&gt;
 		// Look for the first entry younger than the maximum age.&lt;br /&gt;
 		F32 max_age = (F32)MAX_MESSAGE_AGE[cat]; &lt;br /&gt;
 		BOOL found = FALSE;&lt;br /&gt;
 		while (r_iterator != r_last &amp;amp;&amp;amp; !found)&lt;br /&gt;
 		{&lt;br /&gt;
 			if ( LLFrameTimer::getTotalTime() - (*r_iterator).getEntryTime() &amp;lt; max_age )&lt;br /&gt;
 			{&lt;br /&gt;
 				// We found a young enough entry.&lt;br /&gt;
 				found = TRUE;&lt;br /&gt;
&lt;br /&gt;
 				// Did we find at least one entry to remove?&lt;br /&gt;
 				if (r_iterator != message_list-&amp;gt;rbegin())&lt;br /&gt;
 				{&lt;br /&gt;
 					// Yes, remove it.&lt;br /&gt;
 					message_list-&amp;gt;erase(r_iterator.base(), message_list-&amp;gt;end());&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			else&lt;br /&gt;
 			{&lt;br /&gt;
 				r_iterator++;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
&lt;br /&gt;
 		// If we didn&#039;t find any entries young enough to keep, remove them all.&lt;br /&gt;
 		if (!found)&lt;br /&gt;
 		{&lt;br /&gt;
 			message_list-&amp;gt;clear();&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 BOOL LLMessageThrottle::addViewerAlert(const LLUUID&amp;amp; to, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_VIEWER_ALERT]);&lt;br /&gt;
&lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; to &amp;lt;&amp;lt; mesg;&lt;br /&gt;
&lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
&lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 	/*&lt;br /&gt;
         * Stefano: i did try using this but did not help: &lt;br /&gt;
 	&amp;lt;message_list_iterator_t,int,LLMessageThrottleEntry,bool (__cdecl *)(LLMessageThrottleEntry,LLMessageThrottleEntry)&amp;gt;&lt;br /&gt;
 	*/&lt;br /&gt;
 	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(), 1, entry, eq_message_throttle_entry);&lt;br /&gt;
&lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 BOOL LLMessageThrottle::addAgentAlert(const LLUUID&amp;amp; agent, const LLUUID&amp;amp; task, const char* mesg)&lt;br /&gt;
 {&lt;br /&gt;
 	message_list_t* message_list = &amp;amp;(mMessageList[MTC_AGENT_ALERT]);&lt;br /&gt;
&lt;br /&gt;
 	// Concatenate from,to,mesg into one string.&lt;br /&gt;
 	std::ostringstream full_mesg;&lt;br /&gt;
 	full_mesg &amp;lt;&amp;lt; agent &amp;lt;&amp;lt; task &amp;lt;&amp;lt; mesg;&lt;br /&gt;
&lt;br /&gt;
 	// Create an entry for this message.&lt;br /&gt;
 	size_t hash = llhash&amp;lt;const char*&amp;gt; (full_mesg.str().c_str());&lt;br /&gt;
 	LLMessageThrottleEntry entry(hash, LLFrameTimer::getTotalTime());&lt;br /&gt;
&lt;br /&gt;
 	// Check if this message is already in the list.&lt;br /&gt;
 /* stefano i commented the following so to get one only error while debugging */&lt;br /&gt;
 /*	message_list_iterator_t found = std::search_n(message_list-&amp;gt;begin(), message_list-&amp;gt;end(),&lt;br /&gt;
 												  1, entry, eq_message_throttle_entry);&lt;br /&gt;
  	&lt;br /&gt;
&lt;br /&gt;
 	if (found == message_list-&amp;gt;end())&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was not found.  Add it to the list.&lt;br /&gt;
 		message_list-&amp;gt;push_front(entry);&lt;br /&gt;
 		return TRUE;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		// This message was already in the list.&lt;br /&gt;
 		return FALSE;&lt;br /&gt;
 	}&lt;br /&gt;
 	*/&lt;br /&gt;
&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems&amp;diff=34992</id>
		<title>User:Stefano CiscoSystems</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems&amp;diff=34992"/>
		<updated>2007-10-10T14:52:39Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Placeholder only for the moment.&lt;br /&gt;
&lt;br /&gt;
I work in the Networked Virtual Environments group for the Cisco Technology Center.&lt;br /&gt;
&lt;br /&gt;
My [[Build problems with Vista/MSVS2008]]&lt;br /&gt;
&lt;br /&gt;
[[User:Stefano_CiscoSystems|Stefano Crosta]]&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems&amp;diff=34988</id>
		<title>User:Stefano CiscoSystems</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Stefano_CiscoSystems&amp;diff=34988"/>
		<updated>2007-10-10T14:43:37Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: New page: Placeholder only for the moment.  I work in the Networked Virtual Environments group for the Cisco Technology Center.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Placeholder only for the moment.&lt;br /&gt;
&lt;br /&gt;
I work in the Networked Virtual Environments group for the Cisco Technology Center.&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Patch_TUT&amp;diff=34842</id>
		<title>Patch TUT</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Patch_TUT&amp;diff=34842"/>
		<updated>2007-10-09T09:33:32Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Our unit test framework did not have any method for skipping tests. Sometimes known failure cases are found which require temporarily skipping tests. This patch adds that functionality.&lt;br /&gt;
&lt;br /&gt;
WARNING: The patch applies to a pretty old TUT version: TUT-2006-11-04&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- tut-orig/tut.h	2007-05-23 16:37:00.000000000 -0700&lt;br /&gt;
+++ tut-new/tut.h	2007-05-23 16:40:18.000000000 -0700&lt;br /&gt;
@@ -79,6 +79,15 @@&lt;br /&gt;
   };&lt;br /&gt;
&lt;br /&gt;
   /**&lt;br /&gt;
+   * Exception to be throwed when skip_fail() is called.&lt;br /&gt;
+   */&lt;br /&gt;
+  class skip_failure : public std::logic_error&lt;br /&gt;
+  {&lt;br /&gt;
+    public:&lt;br /&gt;
+      skip_failure(const std::string&amp;amp; msg) : std::logic_error(msg){};&lt;br /&gt;
+  };&lt;br /&gt;
+&lt;br /&gt;
+  /**&lt;br /&gt;
    * Exception to be throwed when test desctructor throwed an exception.&lt;br /&gt;
    */&lt;br /&gt;
   class warning : public std::logic_error&lt;br /&gt;
@@ -120,8 +129,20 @@&lt;br /&gt;
      * ex - test throwed an exceptions&lt;br /&gt;
      * warn - test finished successfully, but test destructor throwed&lt;br /&gt;
      * term - test forced test application to terminate abnormally&lt;br /&gt;
+     * skip - test skipped&lt;br /&gt;
+     * skip_fail - test skpped because it is a known failure case&lt;br /&gt;
      */&lt;br /&gt;
-    typedef enum { ok, fail, ex, warn, term, ex_ctor } result_type;&lt;br /&gt;
+    typedef enum&lt;br /&gt;
+	{&lt;br /&gt;
+		ok,&lt;br /&gt;
+		fail,&lt;br /&gt;
+		ex,&lt;br /&gt;
+		warn,&lt;br /&gt;
+		term,&lt;br /&gt;
+		ex_ctor,&lt;br /&gt;
+		skip,&lt;br /&gt;
+		skip_fail,&lt;br /&gt;
+	} result_type;&lt;br /&gt;
     result_type result;&lt;br /&gt;
&lt;br /&gt;
     /**&lt;br /&gt;
@@ -168,7 +189,7 @@&lt;br /&gt;
&lt;br /&gt;
     // execute tests iteratively&lt;br /&gt;
     virtual void rewind() = 0;&lt;br /&gt;
-    virtual test_result run_next() = 0;&lt;br /&gt;
+    virtual test_result run_next(int skip_test_id = 0) = 0;&lt;br /&gt;
&lt;br /&gt;
     // execute one test&lt;br /&gt;
     virtual test_result run_test(int n) = 0;&lt;br /&gt;
@@ -316,7 +337,7 @@&lt;br /&gt;
     /**&lt;br /&gt;
      * Runs all tests in specified group.&lt;br /&gt;
      */&lt;br /&gt;
-    void run_tests(const std::string&amp;amp; group_name) const&lt;br /&gt;
+    void run_tests(const std::string&amp;amp; group_name, int skip_test_id = 0) const&lt;br /&gt;
     {&lt;br /&gt;
       callback_-&amp;gt;run_started();&lt;br /&gt;
&lt;br /&gt;
@@ -328,7 +349,7 @@&lt;br /&gt;
&lt;br /&gt;
       try&lt;br /&gt;
       {&lt;br /&gt;
-        run_all_tests_in_group_(i);&lt;br /&gt;
+        run_all_tests_in_group_(i, skip_test_id);&lt;br /&gt;
       }&lt;br /&gt;
       catch( const no_more_tests&amp;amp; )&lt;br /&gt;
       {&lt;br /&gt;
@@ -371,12 +392,13 @@&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
     private:&lt;br /&gt;
-    void run_all_tests_in_group_(const_iterator i) const&lt;br /&gt;
+    void run_all_tests_in_group_(const_iterator i, int skip_test_id = 0) const&lt;br /&gt;
     {&lt;br /&gt;
       i-&amp;gt;second-&amp;gt;rewind();&lt;br /&gt;
       for( ;; )&lt;br /&gt;
       {&lt;br /&gt;
-        test_result tr = i-&amp;gt;second-&amp;gt;run_next();&lt;br /&gt;
+        test_result tr = i-&amp;gt;second-&amp;gt;run_next(skip_test_id);&lt;br /&gt;
+&lt;br /&gt;
         callback_-&amp;gt;test_completed(tr);&lt;br /&gt;
&lt;br /&gt;
 	if( tr.result == test_result::ex_ctor )&lt;br /&gt;
@@ -436,13 +458,11 @@&lt;br /&gt;
     }&lt;br /&gt;
   };&lt;br /&gt;
&lt;br /&gt;
-  namespace &lt;br /&gt;
-  {&lt;br /&gt;
     /**&lt;br /&gt;
      * Tests provided condition.&lt;br /&gt;
      * Throws if false.&lt;br /&gt;
      */&lt;br /&gt;
-    void ensure(bool cond)&lt;br /&gt;
+    inline void ensure(bool cond)&lt;br /&gt;
     {&lt;br /&gt;
        if( !cond ) throw failure(&amp;quot;&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
@@ -511,10 +531,19 @@&lt;br /&gt;
     /**&lt;br /&gt;
      * Unconditionally fails with message.&lt;br /&gt;
      */&lt;br /&gt;
-    void fail(const char* msg=&amp;quot;&amp;quot;)&lt;br /&gt;
+	template &amp;lt;class T&amp;gt;&lt;br /&gt;
+    void fail(const T msg)&lt;br /&gt;
     {&lt;br /&gt;
       throw failure(msg);&lt;br /&gt;
     }&lt;br /&gt;
+&lt;br /&gt;
+    /**&lt;br /&gt;
+     * Unconditionally fails with message.&lt;br /&gt;
+     */&lt;br /&gt;
+	template &amp;lt;class T&amp;gt;&lt;br /&gt;
+    void skip_fail(const T msg)&lt;br /&gt;
+    {&lt;br /&gt;
+      throw skip_failure(msg);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   /**&lt;br /&gt;
@@ -705,7 +734,7 @@&lt;br /&gt;
     /**&lt;br /&gt;
      * Runs next test.&lt;br /&gt;
      */&lt;br /&gt;
-    test_result run_next()&lt;br /&gt;
+    test_result run_next(int skip_test_id = 0)&lt;br /&gt;
     {&lt;br /&gt;
       if( current_test_ == tests_.end() )&lt;br /&gt;
       {&lt;br /&gt;
@@ -718,8 +747,17 @@&lt;br /&gt;
       {&lt;br /&gt;
         try&lt;br /&gt;
         {&lt;br /&gt;
+          if (current_test_-&amp;gt;first == skip_test_id)&lt;br /&gt;
+          {&lt;br /&gt;
+              test_result tr(name_,current_test_-&amp;gt;first,test_result::skip);&lt;br /&gt;
+              current_test_++;&lt;br /&gt;
+              return tr;&lt;br /&gt;
+          }&lt;br /&gt;
+          else&lt;br /&gt;
+          {&lt;br /&gt;
           return run_test_(current_test_++,obj);&lt;br /&gt;
         }&lt;br /&gt;
+        }&lt;br /&gt;
         catch( const no_such_test&amp;amp; )&lt;br /&gt;
         {&lt;br /&gt;
           continue; &lt;br /&gt;
@@ -774,6 +812,12 @@&lt;br /&gt;
         test_result tr(name_,ti-&amp;gt;first,test_result::fail,ex);&lt;br /&gt;
         return tr;&lt;br /&gt;
       }&lt;br /&gt;
+      catch(const skip_failure&amp;amp; ex)&lt;br /&gt;
+      {&lt;br /&gt;
+        // test failed because of ensure() or similar method&lt;br /&gt;
+        test_result tr(name_,ti-&amp;gt;first,test_result::skip_fail,ex);&lt;br /&gt;
+        return tr;&lt;br /&gt;
+      }&lt;br /&gt;
       catch(const seh&amp;amp; ex)&lt;br /&gt;
       {&lt;br /&gt;
         // test failed with sigsegv, divide by zero, etc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Save this patch as tut.patch in the same directory as tut.h and apply it from a terminal program like xterm or cygwin with the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ patch -p1 &amp;lt; tut.patch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Talk:Patch_TUT&amp;diff=34841</id>
		<title>Talk:Patch TUT</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Talk:Patch_TUT&amp;diff=34841"/>
		<updated>2007-10-09T09:30:24Z</updated>

		<summary type="html">&lt;p&gt;Stefano CiscoSystems: New page: BEWARE.  The patch applies to a pretty old TUT version: TUT-2006-11-04  I did not try using a more recent version, as the latest introduced quite a few changes (new classes, new header typ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BEWARE.&lt;br /&gt;
&lt;br /&gt;
The patch applies to a pretty old TUT version: TUT-2006-11-04&lt;br /&gt;
&lt;br /&gt;
I did not try using a more recent version, as the latest introduced quite a few changes (new classes, new header type).&lt;/div&gt;</summary>
		<author><name>Stefano CiscoSystems</name></author>
	</entry>
</feed>