Bill Buklis wrote on 10.8.2007 1:19:
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users- bounces@lists.boost.org] On Behalf Of Filip Konvicka Sent: Thursday, August 09, 2007 2:34 AM To: boost-users@lists.boost.org Subject: Re: [Boost-users] Visual Studio 2005 ptr_list visualizer?
It would work. You always get 3 template arguments, even if you don't supply them. You just get the default allocator. But as I said (now I can point you to the debugger visualizers wiki :-) http://svn.boost.org/trac/boost/wiki/DebuggerVisualizers), in this case the second wildcard will match the 2nd and 3rd template argument ("$T2,$T3" in terms of "<*,*,*>").
That I knew already. I was just wondering out loud that if only two arguments <*,*> were specified in the visualizer would it still work for a type that included a custom allocator. I looked at how std::vector, std::list, etc are specified and none of them include the extra parameter for the allocator. So, I'm guessing that it would. Either that or the default visualizers are incorrect.
Maybe I still don't understand, but I wanted to point out that a pattern with "<*,*>" still matches a three-argument template, because the pattern matching is text-based (as I mention in the wiki guide). Most of the std:: visualizers don't actually use the template argument, so they're fine with a single * (it suffices that the pattern matches), and those that do use the asterisks correctly (auto_ptr<*>, deque<*,*>).
As an aside, I've discovered that the $T1,$T2, etc. seem to go by the "asterisks" and not by the template arguments. Given class_name
for example $T3 represents the second template argument. Go figure. At least that was the case when I did the visualizer for boost::void_ptr_iterator (used by ptr_array).
Again, due to the textual processing of the typenames. In the case of
class_name
BTW, I use multi-template-argument matching in multi_index_container visualizers when I need to pass exactly the same template arguments to another templates, but never when accessing the actual template argument for type casts etc.
Now please could you upload the most recent version of your visualizers to the boost vault at
http://boost- consulting.com/vault/index.php?directory=Debug/Visualizers_MSVC_8
Now uploaded. The following containers and associated iterators are included in this file: array ptr_array ptr_deque ptr_list ptr_map ptr_multimap ptr_set ptr_multiset ptr_vector
? Please if you do also attach some license info, as I did with boost__multi_index_container.msvc8.vis.txt. If you want, you can add similar comments/headers into your file(s), otherwise I kindly ask you for permission to do this myself. Of course you keep all the credits!
I followed your example and placed similar information at the top of the text file. If it's not right or something's missing, you are free to modify the file as necessary. Just let me know, so I can update my local copy to match.
Excellent, thanks! I'll try them out with 1.34 as I promised, and will mention them in the wiki as well. Cheers, Filip