Re: [boost] Re: variant questions

2003-09-02 Thread Douglas Gregor
On Friday 29 August 2003 10:53 pm, Eric Friedman wrote:
 P.S. Has there been any progress in handling BoostBook documentation in
 CVS? Perhaps Greg or MetaComm can run nightly builds? (This of course does
 not solve the problem of offline access though...)

There has been no progress, though it is much more likely now that I'm back at 
home base. Perhaps I can get something up and running at Sourceforge (if we 
have enough space!).

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: variant questions

2003-09-02 Thread Douglas Gregor
On Saturday 30 August 2003 08:00 am, David Abrahams wrote:
 Misha Bergal [EMAIL PROTECTED] writes:
  Eric Friedman wrote:
  P.S. Has there been any progress in handling BoostBook documentation in
  CVS? Perhaps Greg or MetaComm can run nightly builds?
 
  We can do that. Is there any info on how to use Boost.Build v2 to
  build BoostBook?

I missed Misha's reply somehow. There is information on using BBv2 and 
BoostBook here:

http://www.cs.rpi.edu/~gregod/boost/tools/boostbook/doc/html/

You can build local copies of the documentation with BBv2 once you've read it 
g.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] adaptable_any vs any_with

2003-09-02 Thread Douglas Gregor
On Monday 01 September 2003 07:53 am, Alexander Nasonov wrote:
 I'm asking for voting for the new name of dynamic_any. Please, give you
 preference.
 Here is my discussion about the name with Kevlin Henney ( and empty
 prefix - Kevlin,  - me)

Between the two: adaptable_any is better, I think.

Because I like throwing wrenches: have you considered a very different name 
such as polymorphic or just poly. The idea is that we read:

  polyless_than_comparable, equality_comparable

as a type that is polymorphic over all less_than_comparable  
equality_comparable types.

And because I'm feeling silly and reading a book on lattice theory... it could 
also be named models_meet, as in a type that models the meet of the 
following concepts in the concept lattice. 

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: variant questions

2003-09-02 Thread Douglas Gregor
On Tuesday 02 September 2003 04:58 pm, Misha Bergal wrote:
 Douglas Gregor [EMAIL PROTECTED] writes:
  http://www.cs.rpi.edu/~gregod/boost/tools/boostbook/doc/html/
 
  You can build local copies of the documentation with BBv2 once you've
  read it

 Thanks. It worked. We will be publishing HTML docs starting with this
 night's run.

That's great, thank you!

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: optional/type_with_alignment.hpp vs. metrowerks 8.3PPC CFM

2003-09-02 Thread Douglas Gregor
On Tuesday 02 September 2003 05:01 pm, David Abrahams wrote:
 Peter Dimov [EMAIL PROTECTED] writes:
  Maybe adding struct { double x; } would be enough?

 I think it would be safer to add struct { double T; } for each T in
 the list of types, just in case.

I agree. I've checked in the following patch, which implementations (a 
corrected version of) the above. The preprocessor library rocks.

Mat, does this fix the problem for you?

Doug

Index: type_with_alignment.hpp
===
RCS file: /cvsroot/boost/boost/boost/type_traits/type_with_alignment.hpp,v
retrieving revision 1.12
diff -u -r1.12 type_with_alignment.hpp
--- type_with_alignment.hpp 9 Jun 2003 22:16:19 -   1.12
+++ type_with_alignment.hpp 2 Sep 2003 22:39:51 -
@@ -12,6 +12,8 @@
 #include boost/preprocessor/list/for_each_i.hpp
 #include boost/preprocessor/tuple/to_list.hpp
 #include boost/preprocessor/cat.hpp
+#include boost/preprocessor/list/transform.hpp
+#include boost/preprocessor/list/append.hpp
 #include boost/type_traits/alignment_of.hpp
 #include boost/type_traits/is_pod.hpp
 #include boost/static_assert.hpp
@@ -38,11 +40,22 @@
 typedef int (alignment_dummy::*member_ptr);
 typedef int (alignment_dummy::*member_function_ptr)();

-#define BOOST_TT_ALIGNMENT_TYPES BOOST_PP_TUPLE_TO_LIST( \
+#define BOOST_TT_ALIGNMENT_BASE_TYPES BOOST_PP_TUPLE_TO_LIST( \
 11, ( \
 char, short, int, long, float, double, long double \
 , void*, function_ptr, member_ptr, member_function_ptr))

+#define BOOST_TT_HAS_ONE_T(D,Data,T) boost::detail::has_one_TT
+
+#define BOOST_TT_ALIGNMENT_STRUCT_TYPES \
+BOOST_PP_LIST_TRANSFORM(BOOST_TT_HAS_ONE_T, \
+X,  \
+BOOST_TT_ALIGNMENT_BASE_TYPES)
+
+#define BOOST_TT_ALIGNMENT_TYPES\
+BOOST_PP_LIST_APPEND(BOOST_TT_ALIGNMENT_BASE_TYPES, \
+ BOOST_TT_ALIGNMENT_STRUCT_TYPES)
+
 #define BOOST_TT_CHOOSE_MIN_ALIGNMENT(R,P,I,T)   
\
 typename mpl::if_c  
\
(alignment_ofT::value == target  !BOOST_PP_CAT(found,I)), 
\
@@ -52,6 +65,12 @@

 #define BOOST_TT_CHOOSE_T(R,P,I,T) T BOOST_PP_CAT(t,I);

+template typename T
+struct has_one_T
+{
+  T data;
+};
+
 template std::size_t target
 union lower_alignment
 {
@@ -73,6 +92,9 @@
 )
 };

+#undef BOOST_TT_ALIGNMENT_BASE_TYPES
+#undef BOOST_TT_HAS_ONE_T
+#undef BOOST_TT_ALIGNMENT_STRUCT_TYPES
 #undef BOOST_TT_ALIGNMENT_TYPES
 #undef BOOST_TT_CHOOSE_MIN_ALIGNMENT
 #undef BOOST_TT_CHOOSE_T

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: what happened to allocators in boost?

2003-08-29 Thread Douglas Gregor
On Thursday 28 August 2003 06:26 pm, E. Gladyshev wrote:
 --- Gregory Colvin [EMAIL PROTECTED] wrote:
  Perhaps because you work with the authors of the documentation to
  make it sure it says what needs saying?

 Are the documentation authors monitoring this mailing list?

The developers generally write the documentation, or at the very least have 
authority over what it says.

 How about

 template typename T, typename Counter = int 
 shared_ptr
 {
typedef Counter counter;  //counter type should be public

template typename DataAlloc = std::allocatorT, typename
 CounterAlloc=std::allocatorcounter

shared_ptr( const DataAlloc da = DataAlloc(), const IntAlloc ia =
 CountAlloc() ); };

I suggest that you:
(1) flesh out the interface you want,
(2) decide what the specific semantics of the interface are, and
(3) put together at least a toy implementation (at least try to compile the 
interface specification; the above isn't valid C++, for instance); then
(4) start a new thread to discuss the semantics you need and the syntax you 
want.

 Actually this is probably what the whole thread is about
 to get people to try to find the best practicle solution
 for memory management in the modern C++ age.
 I am not sure that STL style allocators is the best
 possible solution.

Nor is anyone else. But the point is that grand visions cannot go anywhere 
without specific examples. Remember: Boost policies are implemented bottom-up 
not top-down.

You have suggested a way to fix your problem for shared_ptr, and I suggest you 
follow my recommendation above to come up with a proposal that does what you 
need (but do note the comments Peter has already made regarding interfaces 
similar to the one you suggest above).

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] bitset question

2003-08-29 Thread Douglas Gregor
On Thursday 28 August 2003 09:35 am, Neal D. Becker wrote:
 I have looked at std::bitset, std::vectorbool, and boost:dyn_bitset, but
 none seems to supply a feature I need.

 I'd like to be able to assign to a contiguous field of bits in one
 operation. For example:

 bitset12 n;
 n.subset (1, 10) = 0x2;

 Is there any good c++ lib that can do this? 

Not that I know of...

 Would this be a good addition to boost?

I'm sure it would be a good addition to boost::dyn_bitset at least. It depends 
on whether you need std::bitset, std::vectorbool, or boost::dyn_bitset 
semantics for the rest of your code as to which one you would benefit most 
from modifying.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Deprecation/removal of libraries

2003-08-28 Thread Douglas Gregor
On Thursday 28 August 2003 08:20 am, Daniel Frey wrote:
 Douglas Gregor wrote:
  I'd like to deprecate or remove two libraries:
 
  - min_rand has been the only entry in our list of Obsolete Libraries
  for quite some time. Random is quite mature, so let's just eliminate
  min_rand now.
 
  - compose has been surpassed by bind to the point where we dissuade users
  from using compose if they ask, and tell them to use bind instead. Let's
  deprecate this in 1.31.0 and remove it in 1.32.0.

 utility/tie was moved to tuple, so should we remove the obsolete
 docs/references in utility now?

Please do.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] [BGL] Recent patch to depth_first_visitor.hpp breaks depth_first_search

2003-08-28 Thread Douglas Gregor
Vladimir,
The patch you recently checked in:

revision 1.36
date: 2003/08/28 11:48:59;  author: vladimir_prus;  state: Exp;  lines: +53 
-18
Implement depth_first_visit variant which allows to stop the search at
certain vertices.

breaks depth_first_search by aborting before it starts unless a different 
TerminatorFunc is specified. I've checked in the patch below to fix this.

Doug

Index: depth_first_search.hpp
===
RCS file: /cvsroot/boost/boost/boost/graph/depth_first_search.hpp,v
retrieving revision 1.36
diff -u -r1.36 depth_first_search.hpp
--- depth_first_search.hpp  28 Aug 2003 11:48:59 -  1.36
+++ depth_first_search.hpp  28 Aug 2003 16:31:14 -
@@ -76,9 +76,9 @@

   namespace detail {

-struct truth2 {
+struct nontruth2 {
   templateclass T, class T2
-  bool operator()(const T, const T2) const { return true; }
+  bool operator()(const T, const T2) const { return false; }
 };


@@ -127,7 +127,7 @@
   put(color, u, Color::gray());
   vis.discover_vertex(u, g);
   tie(ei, ei_end) = out_edges(u, g);
-  if (static_castTF(func)(u, g)) {
+  if (static_castTF(func)(u, g)) {
   // If this vertex terminates the search, we push empty range
   stack.push_back(std::make_pair(u, std::make_pair(ei_end, ei_end)));
   } else {
@@ -166,7 +166,7 @@
 }

 #else // BOOST_RECURSIVE_DFS is defined
-
+
 template class IncidenceGraph, class DFSVisitor, class ColorMap,
   class TerminatorFunc
 void depth_first_visit_impl
@@ -219,14 +219,14 @@
 }

 if (start_vertex != *vertices(g).first){ vis.start_vertex(start_vertex, 
g);
-  detail::depth_first_visit_impl(g, start_vertex, vis, color,
- detail::truth2());
+  detail::depth_first_visit_impl(g, start_vertex, vis, color,
+ detail::nontruth2());
 }

 for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) {
   ColorValue u_color = get(color, *ui);
   if (u_color == Color::white()) {   vis.start_vertex(*ui, g);
-detail::depth_first_visit_impl(g, *ui, vis, color, detail::truth2());
+detail::depth_first_visit_impl(g, *ui, vis, color, 
detail::nontruth2());
   }
 }
   }
@@ -360,14 +360,14 @@
  DFSVisitor vis, ColorMap color)
   {
 vis.start_vertex(u, g);
-detail::depth_first_visit_impl(g, u, vis, color, detail::truth2());
+detail::depth_first_visit_impl(g, u, vis, color, detail::nontruth2());
   }

   template class IncidenceGraph, class DFSVisitor, class ColorMap,
 class TerminatorFunc
   void depth_first_visit
 (const IncidenceGraph g,
- typename graph_traitsIncidenceGraph::vertex_descriptor u,
+ typename graph_traitsIncidenceGraph::vertex_descriptor u,
  DFSVisitor vis, ColorMap color, TerminatorFunc func = TerminatorFunc())
   {
 vis.start_vertex(u, g);

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] boost/detail/iterator.hpp update

2003-08-28 Thread Douglas Gregor
On Thursday 28 August 2003 01:23 pm, David Abrahams wrote:
 The other possible option would have been to simply not give the user
 a readable error message.  I'm open to opinions that I chose the
 wrong balance.

So we're breaking code in order to produce a better error message? This seems 
like the wrong trade-off to make, especially because it means it breaks code 
when users upgrade from VC6 to VC7; but we want them to upgrade! 

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: what happened to allocators in boost?

2003-08-28 Thread Douglas Gregor
On Thursday 28 August 2003 04:40 pm, Gregory Colvin wrote:
 I also have no objection, and much sympathy, for having a clear
 memory management policy for Boost libraries.  But again, it is a
 matter of people who care about and understand the issue doing the
 necessary work, just like everything else here at Boost.

Moreover, it's not a matter of convincing certain people that a clear memory 
management policy should be adopted by Boost and handed down for developers 
to do the work. Boost doesn't work that way. Policies always come from the 
bottom up: someone has a problem, so they fix it in the libraries that matter 
most to them. With that knowledge of _how_ to fix the problem correctly, they 
can approach other developers and say hey, I think we should fix this 
problem in library X; here's how we did it in library Y. Eventually, most of 
the libraries will support it, and _then_ we can approve it as a Boost 
policy so that future libraries will follow it.

The most productive thing we could do right now would be to end this policy 
discussion. Start with smart_ptr and address *specific* documentation and 
*specific* implementation problems in this library, with resolutions specific 
to that library. Is there a library that does it well? Reference that library 
and state why it does it well, so that others may follow.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Re: Re: what happened to allocators in boost?

2003-08-26 Thread Douglas Gregor
On Tuesday 26 August 2003 01:23 pm, Peter Dimov wrote:
 Leaving aside the issue of whether specializing std::allocatorMyClass is
 a good idea:

 shared_ptr MyClass, MyAllocator  s;

 note that you now wouldn't be able to pass s to a function that expects
 shared_ptrMyClass since the type is not the same.

There's no reason shared_ptr couldn't support a constructor that takes an 
allocator as an argument. Then sp_counted_base_impl would also take an 
Allocator parameter (heh, the allocator it was in fact allocated with) and 
would know how to deallocate itself via a (copy of) this allocator. We'd get 
allocator support without putting the allocator into the type of shared_ptr 
(just like we have deleter support).

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Deprecation/removal of libraries

2003-08-23 Thread Douglas Gregor
I'd like to deprecate or remove two libraries:

- min_rand has been the only entry in our list of Obsolete Libraries for 
quite some time. Random is quite mature, so let's just eliminate min_rand 
now.

- compose has been surpassed by bind to the point where we dissuade users from 
using compose if they ask, and tell them to use bind instead. Let's deprecate 
this in 1.31.0 and remove it in 1.32.0.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] garbled boostboc output in online docs

2003-08-19 Thread Douglas Gregor
On Monday 18 August 2003 11:42 pm, Jeremy Siek wrote:
 Hi Doug,

 Hmm, I just viewed it with a different browser (Apple's Safari instead
 of and old version of Netscape on a Sun) and now I see lots of newlines
 (there were none before). Is this a case of non-portability of a html
 tag, or a bug in Netscape?

 Cheers,
 Jeremy

It's just a preformatted block, but I think the answer is both :). The 
formatting that the pre tag does is essentially non-portable, but nearly 
every browser does it the same way, so it looks like a bug. I don't know of 
a suitable replacement tag.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] garbled boostboc output in online docs

2003-08-18 Thread Douglas Gregor
On Monday 18 August 2003 06:04 pm, Jeremy Siek wrote:
 The Header section in the following pages is garbled.
 Looks like a bunch of missing newlines.

 http://www.boost.org/doc/html/any.reference.html
 http://www.boost.org/doc/html/function.reference.html

 -Jeremy

Where would you like to see the newlines?

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: Re: Re: [boost] GUI/GDI template library

2003-08-14 Thread Douglas Gregor
- Original Message - 
From: Brock Peabody [EMAIL PROTECTED]
 Do you think we will be OK restricting this library to the more
 conformant compilers?

That should be fine. Compiler workarounds can often be added later, and you
shouldn't need to worry about these from the start. In fact, we do NOT want
compilar workarounds to affect the interface, so it's sometimes best to push
them out of your mind when putting together an interface.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost 1.30.1 released

2003-08-10 Thread Douglas Gregor
- Original Message - 
From: Fredrik Blomqvist [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Monday, August 04, 2003 4:40 PM
Subject: [boost] Re: Boost 1.30.1 released


 Shouldn't the documentation for function and signals be added when your're
 making an official release also?

Yep, we should add that to the release manager's TODO list. We can just pull
in the 1.30.0 docs, because nothing has changed in either library for
1.30.1.

 What's the status regarding the new doc-system btw? (too lazy/tired to dig
 through the archives right now ;-)

It's there, and it's not half bad, although development has been a little
slow over the summer. Doxygen extraction has been improved a bit in recent
times.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] what happened to allocators in boost?

2003-08-09 Thread Douglas Gregor
- Original Message - 
From: E. Gladyshev [EMAIL PROTECTED]
 I am wondering what happened to the allocator idiom in
 boost.  Was it left out intentially?
 I can control all memory allocation details in STL
 (orthogonally to data types) but not in boost.
 It seems like a step backward comparing to STL.
 How can I use allocators with shared_ptr? Is there any
 way to write something like this.
 f()
 {
shared_ptr int, std::allocatorint  myptr;
myptr.allocate();
*myptr = 123;
 }

shared_ptrint myptr(new int(123));

?

The allocator design focused on the benefits one could get from specialized
allocators for containers, e.g., data structures that may allocate large
chunks of memory that are expected to be used together. They don't really
give us much for components like shared_ptr that allocate one thing (and
note that shared_ptr does not allocate the pointer it stores, although it
does allocate a reference count). boost::function supports an allocator
argument, but the C++ committee is considering removing this allocator from
the library TR version of function for precisely this reason.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Re: the boost::signal sample crashes

2003-08-06 Thread Douglas Gregor
- Original Message - 
From: E. Gladyshev [EMAIL PROTECTED]
   IMHO, boost needs to get rid of any possibility of
   this to happen.  Why does boost::signal() need a
   DLL/LIB in the first place?  Would not be just the
  .h
   file enough?
  
 
  It could be put in a .h, but there is a lot of code
  in the library and
  it makes sense to have it built as a .lib.

 I think that it doesn't make sense if we have all
 these problems that you are talking about below. If
 the user wants to speed the compile-time up, he/she
 can always create a simple wrapper around the standard
 signal.h.

It's not just compile time, it's also the size of the generated code.
std::multimap instances tend to be huge on many platforms, and a typical
program that uses signals/slots tends to have many instantiations of
boost::signal... in it Sure, it would be possible to put everything into
header files, but now we're paying the cost of instantiating them in every
single translation unit.

 I am really worried about the road the boost comunity
 has choosen just to reduce the compile time.

Compile time is a huge problem for many programs. Sure, it doesn't matter
much with a 100 or 1000-line sample program, but get past 10k lines of
application code (not including the tens of thousands of lines brought in by
including Boost/C++ standard library headers) and your edit-compile-debug
turnaround time becomes unbearable. This is a real problem on real,
industrial code bases, and we have to deal with this problem.

 Please
 let the user to reduce the compile time (making his
 custom wrappers) any way he/she likes it.
 I want to be
 able to just include a .h file w/o having to verify
 that my program won't break from time to time because
 of some .lib/.h conflicts enforced on me by boost
 developers.

As I see it, it's a simple matter of economics. Say we can shave 15 minutes
off the required build time for project X by moving some Boost code into a .
lib. How many compiles will it take before the effort of creating/using that
.lib pays off? Two or three, perhaps, assuming it doesn't take more than 45
minutes to read the Boost.Build documentation to build the library for the
system? Sure, we could make it easier to build/link the libraries, e.g., on
Windows, and we're working on that, but even with the current
less-than-perfect state of affairs it is worth the effort.

Custom wrappers are fine, but again they cost time to create and maintain.
This cost is per-instantiation vs. the per-library cost of using a .lib.

 On the side note: this boost road already lead to the
 fact that the boost::thread library is not up-to-date
 anymore. Win32 supports two threading models that can
 be used in one application at the same time.
 boost::thread doesn't allow it.

The Boost.Threads library defines its own threading model and implements it
on several platforms. If two distinct threading models are useful with the
Boost.Threads model, then it can be extended to support that model. Windows'
two threading models aren't the only threading models out there, and one
thing that Boost.Threads brings to the table is a threading model that is
consistent across all platforms. How portable would a program that relies on
two coexisting Win32 threading models be?

 I think if we
 continue down this road, boost will be in a big
 trouble becoming a true industry standard (at least
 for some of its components).

Businesses are run by economics, and experience shows that refactoring code
into compiled libraries saves time.

 IMHO boost::signals should be in a .h file completely.
 I can always reduce the compile time myself if I need
 to.

 Eugene

I'm not opposed to providing an option to include all code into headers
(e.g., a BOOST_SIGNALS_NO_LIB macro akin to the RegEx macro), and clearly
where there are cases with problems stemming from the DLL/user code split
(e.g., pointers allocated in the DLL and freed in user code) I'll fix the
library, but I don't expect to see Boost moving toward putting more code
into headers in the future.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Infinite number of parameters?

2003-08-06 Thread Douglas Gregor
- Original Message - 
From: Philippe A. Bouchard [EMAIL PROTECTED]
 Joe Gottman wrote:
  They are considering a language solution.  See this link:
  http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1483.pdf

 Wow, that is good.  I like the new syntax...

 0,01$: But maybe they could add some template specifier before its
 declaration; this could help typename / non-type arguments / template
 templates arguments:
[snip example]

 fooint, long, double(1, 2, 3);
 foo1, 2, 3, 4, 5();
 foomap, list, vector();

You can always write a forwarding 'foo' that checks the argument types, but
I understand the reason you'd like this feature. My only question is whether
it is worth the additional machinery that it would take, e.g., would this
help a large amount of code? Perhaps you have a particular real world use
in mind? I can't think of one, and there's a bit of code in the paper that
uses the template varargs stuff but didn't need it.

 0,01$: And they should rename 'the-return-type' to something else...
 something like 'nameless' or 'holotype'.

That's just a placeholder, because there was still quite a bit of discussion
of whether to call the expression-type grabber 'typeof' or 'decltype'. Any
revisions will skip the the-return-type placeholder and use decltype
directly.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] switch-based runtime type selection (for variant)

2003-08-06 Thread Douglas Gregor
- Original Message - 
From: Brian Simpson [EMAIL PROTECTED]
 The general case devolves into an else-if-then:
 Let us assume that we have specializations up to a certain number,
 'max_specialization_count'.  Then we know that we can get switch-based
 runtime type selection (rtts) on any mpl::Sequence whose size is not
 greater than 'max_specialization_count'.  To provide rtts for Sequences
 whose size is greater than 'max_specialization_count', we provide a more
 general template definition.  Its invoke function sets up a switch-based
 selection among the first 'max_specialization_count' types, and then sets
up
 a (recursive) selection among the remaining types.

Of course, you can do slightly better than this by switching in chunks of
size max_specialization_count, so there there are only a few if statements
(to determine which chunk we're in). Granted, the effort would be large and
the return potentially small, so it may not be of interest. (My assumption
is that most people do not use variants with huge numbers of possibilities,
so that few variants require the if statements).

 Questions or comments?

I haven't reviewed the code itself, but the idea is good and I believe this
would be a boon to the variant library. Itay and/or Eric will need to look
this over if it is to be included.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Re: the boost::signal sample crashes

2003-08-02 Thread Douglas Gregor
- Original Message -
From: Bohdan [EMAIL PROTECTED]
 E. Gladyshev [EMAIL PROTECTED] wrote in message
 news:[EMAIL PROTECTED]
   Have you built the signals library multi-threaded or
   single threaded and
 
  Whatever the default build is.
 
 
   are you building an application of the same sort?
 
  The application is set to use multi-thread run-time
  libraries and MFC.DLL.

 Check boost::signal library compile/link options as well.

 It looks like commons source of problems. Would it
 be difficult to add automatic library selection for
 boost::signal ? I mean library suffixes and comment
 pragmas as in boost::regex.
  Honestly ... i'd like to see such build system in all boost
 non-template libs :) IMHO, it is very convenient.

 regards,
 bohdan

The Boost.Build folks are working on a solution for this. I don't know quite
when it will happen, but a future Boost release will fix all of these
compile/link option problems with a common scheme.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Preparing 1.30.1 Release

2003-08-02 Thread Douglas Gregor

- Original Message -
From: Lars Gullik Bjønnes [EMAIL PROTECTED]
 David Abrahams [EMAIL PROTECTED] writes:

 | I have put a diff of the changes between Version_1_30_0 and RC_1_30_0
 | at http://www.boost-consulting.com/diffs-1-30-1.txt.

 These are the changes we (LyX Developers) have made to boost 1.30.0 to
 make it compile with gcc 3.3 without warnings, as well as using a
 different string class than std::string¹.

 If appropriate, please include these changes in 1.30.1.

I think we should apply these changes for 1.30.1. They aren't going to break
anything, and GCC 3.3 is an important compiler. At the very least, we need
the config changes.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] GUI/GDI template library

2003-08-01 Thread Douglas Gregor
From: E. Gladyshev [EMAIL PROTECTED]
[snip]
 template  typename IT, typename PhysicalGuiLayer 
 class ListControl
[snip]

I'm coming in a bit late into this discussion, but I too am interested in
the outcome of this project.

I strongly dislike the PhysicalGuiLayer template parameter, for several
reasons:

1) It buys us very little: generally template parameters are useful when
more than one instantiation will be used within any particular program. It
is highly unlikely that a program will support two physical GUI layers
simultaneously, and I would claim that any such program would be such a
usability nightmare as to be excluded from consideration.
2) It hurts us a lot: compile times will skyrocket because every widget,
layout engine, etc. will have to have full source code included in every
translation unit. We cannot do this to users, especially with a GUI library,
because GUIs are often tweaked (requiring many builds).
3) There is an alternative solution: Boost.Threads presents a single,
non-template interface to the user and hides all of the platform-specific
details using the pImpl idiom. The same approach can be applied here, and I
think we'll find that it has all of the same advantages.

Here is a more general comment regarding the compile-time vs. run-time
discussions: Genericity can be accomplished at run-time or at compile-time,
but neither approach excludes the other.

I believe that one bit that falls out of the above agrees 100% with the
poster that suggested the following:

class list_control; // implemented by the library. Uses some sort of
generic list element type

templatetypename Element
  class typed_list_control; // thin wrapper over list_control. Element
is the type of the data in the list

As noted earlier, this design has a huge number of benefits:
1) list_control is not a template, so we can use the simplified
cross-platform model used in Boost.Threads, and of course this gives us the
ability to create a much more dynamic system (e.g., loaded from a resource
file) if we choose to.
2) typed_list_control gives us all of the great static-checking features
we would want, but in a lightweight veneer.

I've used this model extensively before (e.g., Boost.Signals uses it to
shrink the size of boost::signal template instantiations), and it has worked
very well.


Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Signals and multi_array? [was: Problem compilingboost.filesystem]

2003-07-16 Thread Douglas Gregor
 Douglas Paul Gregor [EMAIL PROTECTED] writes:

  Doesn't look like there has been any activity on signals and
multi_array.
  Are the developers aware of the need for action?
 
  I'll try to work on Signals tonight.

 Hint: turn the body of your policies class into the body of your
 iterator.

'tis done, and it was _very_ easy, and the result is as clean as is
conceivable. Nice job!

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: plans for a bugfix release ?

2003-07-16 Thread Douglas Gregor
- Original Message -
From: Aleksey Gurtovoy [EMAIL PROTECTED]
 Beman Dawes wrote:
  What is really needed is to add a history element to the test_log.xml
  files. That would be far more reliable. Let me think about it overnight.

 The way we do it in the new reports is to extract the failures from the
 original regression run and pass them as expected failures to the input
 of the scripts producing the today's reports. The scripts merge these into
 extended results XML, and then produce the HTML reports basing on that.
 Works perfectly.

 All XML processing is done through XSLT, but it's very worth it - the
 stlysheets which do the extracting and merging are barely 100 lines long.

 Aleksey

I don't have the time now, but if it's feasible for you I would absolutely
_love_ if we could integrate this with BoostBook in the future. If I had my
way, everything would run through the documentation system so that
everything would be documented (see, e.g., the testsuite documentation and
generation for Function) and in sync.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Missing functional files in CVS?

2003-07-16 Thread Douglas Gregor
- Original Message -
From: Daryle Walker [EMAIL PROTECTED]
To: Boost [EMAIL PROTECTED]
Sent: Wednesday, July 16, 2003 3:10 PM
Subject: [boost] Missing functional files in CVS?


 In my copy of the main CVS, looking at ROOT/boost/libs/libraries.htm,
 the links to function and signals, both by Doug Gregor, don't work.
   Hopefully this is temporary?...

Less temporary than I'd hoped, because we still don't have a good solution
for the generated documentation... anyway, the documentation is all
available here:
  http://www.cs.rpi.edu/~gregod/boost/doc/html/libraries.html

From that page, you can grab the HTML documentation tarball and extract it
in $BOOST_ROOT to get the documentation you seek. You can also grab the PDF
file or some Unix man pages, if you prefer those :)

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Documenting/testing boost::incomplete?

2003-07-16 Thread Douglas Gregor
- Original Message -
From: Eric Friedman [EMAIL PROTECTED]
 Other components, however, are more general purpose -- namely,
boost::empty
 and boost::incomplete. Since boost::empty is almost trivial, I plan to
 document and test it as part of the utility library.

 But boost::incomplete is generally quite useful (for example, in
 implementing the pimpl idiom), and I think Boosters may employ it often
 without boost::variant. My question then: should boost::incomplete be
given
 its own libs/incomplete directory and an announcement on the main html
page?

 Any input welcome.

I think both boost::empty and boost::incomplete should go into the utility
library, because they are both of general utility and are relatively small.
But they should be mentioned on the main HTML page in any case, because they
can be useful for users.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] [Signals] BCB patchlet

2003-07-14 Thread Douglas Gregor
 This removes a possible use of 'tag' before definition warning with
 BCB.

I didn't use this actual patch (I'd rather avoid pragmas when there's a
reasonable in-language workaround), but the code I checked in should get rid
of the warning on BCB (not that Signals compiles at the moment!). Sorry for
the delay.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] rw_lock / next thread version

2003-07-13 Thread Douglas Gregor
 Ok, enough of the review.  Assuming that rw_lock is destined for
 release, I propose that whether you want to lock for reading, or for
 writing, is usually a decision made at compile time, and that this fact
 can be made to slightly simplify the scoped_lock interface, and make it
 slightly more efficient.  So as a minor twist to the interface, I
 propose:

 class rw_mutex
 {
 public:
  typedef detail::read_lockrw_mutex  read_lock;
 typedef detail::write_lockrw_mutex write_lock;
   ...
 };

I too would prefer this interface,  because I feel it is much cleaner. I
*hate* enums and constants, btw :)

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] boost::signal patch

2003-07-13 Thread Douglas Gregor
MSVC 7.1 complains: warning  C4099:
 'boost::signals::detail::real_get_signal_impl0,T1,T2,T3,T4,T5'  : type
 name first seen using 'struct' now seen using 'class'
 
 at several later points in the same file.  These can all be removed by
 changing struct to class in the declaration quoted above.

Thanks, it's done now.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] minor nitpick: why signal.hpp instead of signals.hpp?(notext)

2003-07-11 Thread Douglas Gregor
Subject: [boost] minor nitpick: why signal.hpp instead of signals.hpp?
(notext)

Probably a mistake. signal.hpp made sense when the library was not in the
namespace boost::signals, but signals.hpp makes more sense now. This should
probably change.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] [Graph] Improved creation of visitors fromfunctionobjects

2003-06-22 Thread Douglas Gregor
- Original Message -
From: Vladimir Prus [EMAIL PROTECTED]
 Douglas Gregor wrote:
  Creating new visitors in the BGL can be a pain, because it may require a
  lot of extra typing for simple cases. I'd like to add the ability to
attach
  function objects to visitor events like this:
 
dfs_visitor()
  .do_on_back_edge(var(has_cycle) = true)
  .do_on_tree_edge(bind(vectoredge::push_back, ref(tree_edges),
_1));
 
  I'd really prefer on_XXX instead of do_on_XXX, but GCC trips over
the
  former syntax. Anyway, the code is ready to check in if there are no
  objections. The patch isn't very large, but is bigger than I would like
to
  post here.

 Hi Doug,
 did you commit that patch already? I can't find anything named do_on in
 current CVS.

I've now committed it.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Mac OS 10 type_traits/type_with_alignment.hpp

2003-06-15 Thread Douglas Gregor
- Original Message -
From: Ralf W. Grosse-Kunstleve [EMAIL PROTECTED]
To: Boost mailing list [EMAIL PROTECTED]
Sent: Saturday, June 07, 2003 5:50 AM
Subject: Re: [boost] Mac OS 10  type_traits/type_with_alignment.hpp


 --- Douglas Gregor [EMAIL PROTECTED] wrote:
 /var/tmp/mac/boost/boost/type_traits/type_with_alignment.hpp:120:
 error: no type named `type' in `boost::maybe_print_alignfalse, 8, 4'

So you have a type that is 8-byte aligned, but we don't have any types in
the list of possible types that have an alignment of 8 on that architecture,
so it fails. We'll just have to find a type that has 8-byte alignment and
add it to the list. I'll see if I can dig one up tomorrow.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Mac OS 10 type_traits/type_with_alignment.hpp

2003-06-05 Thread Douglas Gregor
My apologies for the very late reply. I was away for a while and am still
sorting through my inbox...

 Platform:
   Mac OS 10.2
   gcc 3.3 compiled from sources
   boost cvs from last Friday

 When porting the Boost.Python bindings for some custom libraries I ran
 into a problem with static asserts in type_with_alignment.hpp:
[snip patch]
 This patch allows me to compile and link, and our regression test
 runs fine.

 Reducing my code to a minimal test is most likely a time-consuming
 project that I'd like to avoid if possible (compilation is quite slow
 to make things worse). Do the authors of the code above have any ideas
 what could be going wrong? Are there things that I could try first
 before chopping my code into pieces?

If you could figure out what alignment value you're trying to get a type for
it would help greatly. One way you could do it would be to replace the
static assertion lines with something that will halt the compile and give
back the Align value in an error message, e.g.,

// somewhere
templatebool DontPrintIt, std::size_t Align struct maybe_print_align {
typedef void type; }
templatestd::size_t Align struct maybe_print_alignfalse, Align {};

// instead of the static asserts:
typedef typename maybe_print_align(found = Align), Align::type foobar;

Note that when those static asserts fail, it means that you aren't getting
back a type with the right alignment.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Patch for the Function library

2003-06-02 Thread Douglas Gregor
Guillaume and Giovanni,
  As Beman mentioned, I've been away for a bit. Let's see if I can answer
some of the lingering what-was-the-maintainer-thinking questions:

Giovanni said:
 Instead, I think this is ill-formed because it's throwing an exception
which
 is not derived from std::bad_alloc().

This is an error. I'll use std::bad_alloc instead.

Giovanni also said:
 What is this code supposed to do? If
 the goal is disabling new() for stateless_integer_add, why simply you
don't
 add a protected operator new as member of the class?

The goal is for the regression test to fail at run time when operator new ()
is being used. The failure needs to be at run time (not compile time, as the
above solution proposes) because the feature we're testing is an
optimization: compilers that can't do it should still compile the code (it
just has slightly different semantics).

Guillaume said:
 The best solution would be to track down compilers that complains if the
 return statement is missing and conditionaly add it for them. But only the
 maintainer can tell us for which compiler the dummy return statement was
 needed. Or maybe we could just remove it and see which compilers suddenly
 complains in the regression tests :-).

Ha! If only the maintainer knew which compiler that was :). If CVS doesn't
tell us, let's just remove the return statement, replace std::runtime_error
with std::bad_alloc, and see who whines about it. I'll commit the patch as
soon as I can, but someone else is welcome to do so if they get there first.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] [BGL] Patch for nonrecursive DFS to fix stack overflow

2003-06-02 Thread Douglas Gregor
- Original Message -
From: B B [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Friday, May 30, 2003 9:52 AM
Subject: [boost] [BGL] Patch for nonrecursive DFS to fix stack overflow


 Here's a patch to depth_first_search.hpp in BGL in version 1.30.0 of boost
 that implements nonrecursive depth first search.  This reduces or
eliminates
 the problem of stack overflow that occurs with DFS in large graphs.  There
 also may be a performance gain in some cases.

This is good. Unless there are any objections, I think we should apply this.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] interest in dominator tree?

2003-06-02 Thread Douglas Gregor
- Original Message -
From: Jeffrey Hsu [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Friday, May 30, 2003 2:41 AM
Subject: [boost] interest in dominator tree?


 Is there any interest in a generic implementation of the
 Lengauer-Tarjan algorithm to compute the immediate dominator
 tree of a flow graph in almost-linear time?

I'm interested, having recently implemented it myself for the BGL. My only
concern is that the algorithm is very specific to a narrow domain, and might
not belong in Boost. Granted, the thought of a good, _generic_ static
analysis library makes me giggle with glee :)

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Boost Library Guidelines

2003-04-30 Thread Douglas Gregor
On Wednesday 30 April 2003 06:30 am, Pavol Droba wrote:
 Most of the new warnings can be easily removed with a static_cast. I don't
 understand, why any boost lib have to generate such a warnings.

enters grumpy old developer mode
I agree that it would be great from the user's point of view if all of Boost 
compiled without warnings, but I'm afraid a no-warnings policy will make the 
whack-a-mole game all that much worse. As it stands, some Boost code is 
brittle on certain compilers: tweak in one place, and it breaks a compiler; 
fix for that compiler and you've broken another compiler. 

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Threads and mutexes : assign_to error

2003-04-30 Thread Douglas Gregor
On Wednesday 30 April 2003 08:44 am, Jacques Kerner wrote:
 Hi,

 I get the following error :

 error C2664: 'void boost::function0R,Allocator::assign_to(Functor)' :
 unable to convert parameter 1 from 'const CTaskManager' to 'CTaskManager'

 when doing this :

 class CTaskManager
 {
 public:
 CTaskManager();
 ~CTaskManager();
 void operator()() {}

 private:
 boost::mutex m_mutex;
 }

 and

 CTaskManager taskManager;
 boost::thread_group mainThreadGroup;
 mainThreadGroup.create_thread(taskManager);
 mainThreadGroup.join_all();

 The error dissapears when I remove the mutex from the definition of
 CTaskManager ... (?!!)

 So what is the right way to use mutex and threads together? Do I have to
 declare the mutex outside of the
 functor? Why?

Mutexes are not copyable, and when you pass taskManager to create_thread it 
tries to make a local copy of the function object . If you would prefer to 
pass a reference to taskManager to create_thread, do this:

  mainThreadGroup.create_thread(boost::ref(taskManager));

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Boost implementation of the Library TR?

2003-04-30 Thread Douglas Gregor
On Wednesday 30 April 2003 08:25 am, Beman Dawes wrote:
 * What namespace should the Boost version go in?

(tr1 is t, r, followed by numeral one, and is the committee's
tentative choice for a sub-namespace.)

std::tr1   // well, this IS an implementation of the standard TR
boost::tr1 // users can pick and choose, also more traditional

Putting everything into boost::tr1 feels like gratuitous code movement. Then 
our users' migration path is from ::boost to ::boost::tr1 to ::std::tr1. Why 
bother with the intermediate step?

 * What header naming convention?

 Note that users can pick and choose an implementation by header
choice, even if we use namespace std::tr1.

I'd prefer to use the standard's naming convention for headers, to make it a 
real implementation of TR1. There is one problem with this that I don't know 
how to completely solve: some of the new libraries are extensions to old 
headers, e.g., function, reference_wrapper, and bind all go into 
functional. Can we rely on something like GNU's #include_next to allow us 
to have our own functional that falls back to the standard library's 
functional?
  
 * Should we continue to maintain the pre-TR Boost versions of the
 libraries?

Decide this on a library by library basis  Long term, probably don't
want to continue as we don't want to compete against the standard
 itself.

We should maintain the pre-TR versions at least until the TR gets its rubber 
stamp, because until then the TR versions may still change whereas the pre-TR 
versions are generally quite stable.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: [Graph] Improved creation of visitors from functionobjects

2003-04-17 Thread Douglas Gregor
On Thursday 17 April 2003 03:50 am, Vladimir Prus wrote:
 IOW, now specifying behaviour for event requires creating a new class, with
 event_filter typedef and operator(). You propose to pass lambda,
 immediately on dfs_visitor creation. I think this is indeed convenient.
 I've some concerns about efficiency, but why don't try?

It's a little worse than just creating the new class with event_filter: you 
need to build up a cons-list out of std::pairs containing your visitor types. 
I generally just subclass dfs_visitor, but that's a typing-heavy hoop to 
jump through for a simple visitor.

The efficiency won't be any worse than using a bind object elsewhere in a 
program. The do_on_XXX functions merely augment the visitor list of 
dfs_visitor and return a new dfs_visitor object.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: [Graph] Improved creation of visitors from functionobjects

2003-04-17 Thread Douglas Gregor
On Thursday 17 April 2003 10:04 am, Vladimir Prus wrote:
 Douglas Gregor wrote:
  The efficiency won't be any worse than using a bind object elsewhere in a
  program. The do_on_XXX functions merely augment the visitor list of
  dfs_visitor and return a new dfs_visitor object.

 This precisely what worries me -- bind might not be very efficient. I may
 be a overly concerned about efficiency at the moment --- recently wrote a
 graph algorithm in BGL which turned out to be 100 times slower that a
 simply-coded one :-( Not sure if this is BGL's fault or the problem with
 the algorithm, though.

Not to blame the victim, but in my experience the abstraction penalty doesn't 
go above, say, 20x in the worst case, so it sounds like an algorithmic 
problem to me. Granted, figuring out the actual complexity of a particular 
instance of any BGL algorithm can be a nontrivial task: one property map with 
non-constant access time can sink the whole thing.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Regression logs

2003-03-30 Thread Douglas Gregor
On Saturday 29 March 2003 09:46 am, David Abrahams wrote:
 I just returned from PyConDC 2003, where a system was described which
 will watch a CVS repository for checkins, launch new remote tests on
 any number of platforms, collect the results, and notify people of
 failures (e.g. via mail or even IRC chat).  It can be set up to bother
 the person at fault first, and then bother a different group, for
 example.  http://buildbot.sourceforge.net/.  It looks like it could
 be really useful for us.

 Brian Warner expressed interest in helping us get that BuildBot up for
 Boost if we want to use it.

 Thoughts?

This sounds great, but do we have access to enough hardware to make this 
feasible? 

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Regressions in type_traits and lexical_cast (was: Re: [Boost-Users]Question about boost::function)

2003-03-15 Thread Douglas Gregor
John,
  This regression in Function is coming from your recently change to 
is_class.hpp. Would you mind taking a look?

On Saturday 15 March 2003 01:31 pm, Bernhard Glueck wrote:
 Hi !

 I was using boost:function for a while now with success on
 Visual C 7.0  ( MSVC 1300 ) .

 I was always using the most actual boost 1.30.0 version from the CVS.
 Today i updated the CVS again ( after two days of not doing so )
 and suddenly my code which relied on boost::function does not compile
 anymore.

boost::function hasn't changed in the last few weeks, but some of the 
libraries it depends on have changed. 

 I think there have some changes been made, so i need to change my code,
 but since there is no boost::function
 documentation in the CVS yet can someone please enlighten me what has
 changed .. ?

FYI, updated documentation for Boost.Function is here:
  http://www.cs.rpi.edu/~gregod/boost/doc/html/function.html

Also, it's on the RC_1_30_0 branch in CVS (that will be 1.30.0; mainline CVS 
is for 1.31.0 and later).

 Here is the relevant code:
 ( I have marked the line where compilation fails and provided the exact
 error details below )
 ( This code compiled perfectly two days ago )
[snip code]
 ///
 /// VISUAL C ERROR OUTPUT:
 ///
/// D:\Sdk\boost\boost\type_traits\is_class.hpp(78) : error C2510:
 'value' : left of '::' must be a class/struct/union
 D:\Sdk\boost\boost\type_traits\is_class.hpp(94) : see reference
 to class template instantiation 'boost::detail::is_class_implT' being
 compiled
 with
 [
 T=boost::any (__cdecl *)(const boost::any )
 ]

Looks like a type_traits problem. I suspect this patch:

Index: is_class.hpp
===
RCS file: /cvsroot/boost/boost/boost/type_traits/is_class.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -r1.5 -r1.6
84a85
 ::boost::type_traits::ice_not ::boost::is_functionT::value 
::value

John?

 // SECOND Problem
 As you may note all conversions from data types to std::string are
 commented out !
 This is because boost::lexical_cast fails to compile in DEBUG mode ( it
 compiles fine in RELEASE Mode
 and also works like a charm in RELEASE mode )

The implementation of lexical_cast w.r.t. strings is in a state of flux. I'm 
too far out of the loop to be helpful on this one.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: Regressions in type_traits and lexical_cast (was: Re:Questionabout boost::function)

2003-03-15 Thread Douglas Gregor
On Saturday 15 March 2003 06:03 pm, Andreas Huber wrote:
 [ ... ]

  Index: is_class.hpp
  ===
  RCS file: /cvsroot/boost/boost/boost/type_traits/is_class.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -r1.5 -r1.6
  84a85
 
   ::boost::type_traits::ice_not ::boost::is_functionT::value
  ::
  ::value
 
  John?

 This is due to the missing comma I reported in

 http://lists.boost.org/MailArchives/boost/msg45211.php

 Regards,

 Andreas

Ah, yes it is. I've applied the patch (actually, Daniel Frey's version: no 
need to duplicate code) on mainline and the RC_1_30_0 branch.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: C++ Standards Committee upcoming meeting

2003-03-12 Thread Douglas Gregor
On Wednesday 12 March 2003 08:05 am, Beman Dawes wrote:
 At 11:19 PM 3/11/2003, Douglas Gregor wrote:
  As it stands, the system itself is in good shape, and the documentation

 for

  libraries I've redocumented in BoostBook is quite reasonably. I still

 think

  a BoostBook overview/tutorial at Oxford would be beneficial.

 Let's plan on it. Would Sunday evening be OK?

 --Beman

Okay.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: C++ Standards Committee upcoming meeting

2003-03-11 Thread Douglas Gregor
On Tuesday 11 March 2003 09:20 pm, Beman Dawes wrote:
 Doug Gregor is tentatively planning to host a session on the Boost
 documentation system he has been working on. No date or time yet.c

 Doug, how are your plans shaping up?

 --Beman

I'm mainly working on usability issues now, most importantly moving the tools 
into their final places in the Boost CVS repository (unless there are any 
objections?), teaching BBv2 to handle BoostBook documents (need... help... 
from... experts...), and getting some good reference documentation together. 

As it stands, the system itself is in good shape, and the documentation for 
libraries I've redocumented in BoostBook is quite reasonably. I still think a 
BoostBook overview/tutorial at Oxford would be beneficial.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] HTML documentation imported into 1.30.0

2003-03-05 Thread Douglas Gregor
I've imported the BoostBook-generated HTML documentation into the RC_1_30_0 
branch under doc/html. The affected libraries are: Any, Function, Ref, and 
Signals. Other than the new directory there should be no effect

Should we include PDF and/or man pages for these libraries?
  - The PDFs are about 270k uncompressed, 127k compressed
  - Man pages are about 90k uncompressed, 8k compressed

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] HTML documentation imported into 1.30.0

2003-03-05 Thread Douglas Gregor
On Wednesday 05 March 2003 03:53 pm, Beman Dawes wrote:
 I thought we agreed to make pdf, man, and all formats other than HTML
 available on some separate site.

Okay. PDF and man pages are available at:
  http://boost.sourceforge.net/release/

and there are links from libs/libraries.htm.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] boost::bind - cannot convert resulting function objectto function pointer

2003-03-04 Thread Douglas Gregor
On Tuesday 04 March 2003 10:02 am, Marc Jacobs wrote:
 I'm trying to use a member function as a callback to a C-style library.
 I've got the bind working by itself, but the resulting function object does
 not convert to the type required by the library. Clearly a boost::bind
 object is not a simple function pointer and the type is being checked by
 the compiler. Is there any way to coerce the types and still use
 boost::bind? I have no control over the declaration or definition of the
 C-style library. Here's a sample:
[snip code]

Unfortunately, this isn't generally possible. boost::bind objects can carry 
state with them but function pointers cannot. However, if you have some way 
to associate arbitrary data with each callback (even if its just a void 
pointer), such as:

  typedef void (*callback_type)( int i, void* user_data );

Then you can use a combination of bind and function to create a thunk 
routine mapping the void* to a boost::function object. The technique is 
described here:
http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Generalizing_C-Style_Callbacks

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Boost.signal with gcc 3.3 or gcc 3.4

2003-03-03 Thread Douglas Gregor
On Monday 03 March 2003 11:42 am, Lars Gullik Bjønnes wrote:
 I have been trying, but gcc failes with an ICE. Of course gcc should
 not segfault, but I am trying to find out if it is an segfault on
 valid code or if it is an segfault on illegal code.
 I have not been successful on finding a small testcase so far...

I believe it is valid code. The EDG front end accepts it on its strictest 
mode, if that means anything.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] boost::bind - simple test case does not work...

2003-03-03 Thread Douglas Gregor
On Monday 03 March 2003 05:03 pm, Marc Jacobs wrote:
 bind( X::f, x, _1 )( 6 ); // error!

You can't pass rvalues to boost::bind function objects, because of the 
forwarding problem in C++. If you use this it should work:

  int i = 6;
  bind( X::f, x, _1 )( i );

There's a good description of the forwarding problem here:
  http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1385.htm

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Encapsulate boost::bind in a template method

2003-02-19 Thread Douglas Gregor
On Wednesday 19 February 2003 09:37 am, Peter Dimov wrote:
 You'll soon find that this is not _that_ easier to use compared to

 setEventHandler(bind(CButton::OnPaint, this));

 and the latter is much more flexible:

 setEventHandler(bind(CButton::OnMessage, this, WM_PAINT));

 but that's another story. :-)

... and if you decide to go down that road, you'll likely want to write 
setEventHandler like this:

void setEventHandler(const boost::function0long handler)
{
  // add event handler to std::map
}

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Any, Function, and Signals documentation

2003-02-17 Thread Douglas Gregor
On Monday 17 February 2003 11:21 am, Beman Dawes wrote:
 Ouch! That means the current HTML docs for these libraries aren't available
 to Boosters who depend on CVS to keep up-to-date,

They're always available here, regenerated nightly in HTML, DocBook, FO, PDF, 
and man pages:
  http://www.cs.rpi.edu/~gregod/boost/doc/html/libraries.html

 or to the inspect
 program, or any other operations that depends on the CVS tree including an
 exact representation of what a release would look like.

I just ran inspect without any doc/ subdirectory. You'll see broken links from 
the forwarding HTML to $(BOOST_ROOT)/doc/html.

Extract http://www.cs.rpi.edu/~gregod/boost/doc/boost-doc-html.tar.gz into 
$(BOOST_ROOT) and you'll have a full release. 

 I think you need to develop a procedure so that a documentation change is
 reflected in the CVS doc/html files right away.

We don't want to stick all of the generated HTML into CVS (too big). 
Documentation changes will show up the next morning at the aforementioned 
site. I'd like to add a link to this generated documentation on the main page 
(so it is obvious that both the current release documentation and the current 
CVS documentation are available on-line). Then the top-level site would look 
like this:
  http://www.cs.rpi.edu/~gregod/boost/index.htm

 Another effect of that change was to break all links to these docs from 
 other Boost libraries. We won't even mention links from other web sites.

They will only break if the links try to link inside the documentation files, 
e.g., to a specific anchor. Links that go directly to the library's entry 
point (index.html) will find the meta-refresh index.html that redirects to 
the generated documentation. I've checked with inspect: nothing broke.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Any, Function, and Signals documentation

2003-02-17 Thread Douglas Gregor
On Monday 17 February 2003 04:49 pm, Beman Dawes wrote:
 At 02:00 PM 2/17/2003, Douglas Gregor wrote:
  They're always available here, regenerated nightly in HTML, DocBook, FO,
  PDF, and man pages:
http://www.cs.rpi.edu/~gregod/boost/doc/html/libraries.html

 That really isn't very satisfactory. In the last hour for example, pages on
 that web site have only been available sporadically. One minute access is
 OK, the next minute the site or page can't be found. No problems with other
 popular web sites.

You probably caught me messing with the scripts (and therefore regenerating 
the documentation in-place). 

 Having the docs locally on my own machine is just a lot more satisfactory.
 Cheaper, too (my Internet access is metered service.)

Well, you'll have the doc source on your machine, and can generate whatever 
format you want.

  We don't want to stick all of the generated HTML into CVS (too big).

 If it is too big for the regular CVS, isn't it too big for the distribution
 too? How big is big?

The documentation isn't big (~650k, much smaller compressed). However, 
generated documentation tends to change a lot even with minor changes to the 
input, so unless someone has a good way to tell CVS don't track any history 
for this file then the CVS repository will get huge with the histories of 
these generated files. 

  Documentation changes will show up the next morning at the aforementioned
  
  site. I'd like to add a link to this generated documentation on the main
  page (so it is obvious that both the current release documentation and

 the

  current CVS documentation are available on-line).

 Seems like a step backward. We have a simple model now. Click on CVS
 update (or equivalent in your favorite client) and you get the latest
 version of all files. CVS is the only tool needed.

Sure, but we also have documentation that's inconsistent across libraries, not 
indexable, and unavailable in any format other than HTML. Our current simple 
model is simple for simple uses, but doesn't extend to any more advanced 
cases. 

 It really isn't practical for many Boost developers to download a whole
 tarball and unpack it every time they want to be sure their Boost tree is
 up to date. Unpacking doesn't do things like getting rid of obsolete files
 either. Need a way to just download the changed files - and that sounds
 like CVS to me.

It's my hope that developers will adopt BoostBook for their own documentation. 
Then any time they want to be sure their local copy of the documentation is 
up-to-date they just regenerate the format they want locally. It's really not 
much different from rebuilding, e.g., libboost_regex with Boost Jam.

 So I think we need to figure out a way for generated docs to work in the
 context of CVS. Or am I just being too picky?

If I can stabilize the filenames a bit, it _might_ be plausible to use CVS 
along with the cvs admin -o command, which can erase completely certain 
revisions of a file. It would be possible for a little grim reaper script to 
come by and erase all but the most recent version of each file on a nightly 
basis, after checking in the new version. Sounds tenuous to me...

  They will only break if the links try to link inside the documentation
  files,
  e.g., to a specific anchor. Links that go directly to the library's entry
  
  point (index.html) will find the meta-refresh index.html that redirects

 to

  the generated documentation. I've checked with inspect: nothing broke.

 Well, but that's because there are only three libraries being generated
 now.  Some lib's docs do a lot more linking to other boost docs.

 --Beman

It's easy to link out of the generated documentation to static documentation 
(of course), and it's much easier to link amongst entities in BoostBook than 
in HTML. For instance, librarynameTuple/libraryname will link to the 
Tuple library, regardless of where the HTML is (even if it isn't generated); 
functionnameboost::ref/functionname will link to the function boost::ref, 
regardless of where it is. Broken link detection is built into the BoostBook 
XSL, because it emits a warning whenever name lookup fails (and won't 
generate a link). What we do now is much more involved: find the HTML file 
and anchor documenting the entity we want to link, put in an explicit link a 
href=..., and checking the links will have to be run manually prior to a 
release. 

Using generated documentation has some up-front costs: you'll need to get an 
XSLT processor, and maybe some stylesheets (if you don't want them downloaded 
on demand), and probably run a simple configuration command (now a shell 
script; will be in Jam eventually). 

The time savings from the generated documentation will come in little pieces: 
you won't need to keep the synopsis in sync with the detailed description, 
you won't need to keep a table of contents in sync, keep example code in a 
separate test file in sync with the HTML version in the documentation, or 
look up

Re: [boost] Regression progress; Win32

2003-02-16 Thread Douglas Gregor
On Saturday 15 February 2003 10:24 am, Beman Dawes wrote:
 * signals lib is failing all Intel and Microsoft tests; as recently as a
 few days ago the bulk of these were passing.

Should be fixed now. I forgot to tell the library to link statically for the 
testcases.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



[boost] Any, Function, and Signals documentation

2003-02-16 Thread Douglas Gregor
I've removed the HTML-only documentation for these three libraries from CVS, 
as the documentation for each is now maintained in BoostBook. 
libraryname/index.html forwarding documents are in place to get to the 
generated documentation (in doc/html), and when we near the release I will 
provide a tarball/zip archive of the generated HTML, the contents of which 
should be extracted into $BOOST_ROOT before it is archived for release.

Any questions/problems/objections/requests?

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] boost_signals.dll contains no symbols

2003-02-14 Thread Douglas Gregor
On Friday 14 February 2003 03:30 am, Aleksey Chernoraenko wrote:
 Oops..., I am sending again, now with files

Would you please re-send slot.diff? It was sent as quoted-printable and 
ended up mangled on my end. Oddly enough, the others were perfectly fine.

Thanks for doing this!

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] boost_signals.dll contains no symbols

2003-02-14 Thread Douglas Gregor
On Friday 14 February 2003 11:52 am, Douglas Gregor wrote:
 On Friday 14 February 2003 03:30 am, Aleksey Chernoraenko wrote:
  Oops..., I am sending again, now with files

 Would you please re-send slot.diff? It was sent as quoted-printable and
 ended up mangled on my end. Oddly enough, the others were perfectly fine.

Please ignore this. I was able to get it from the archives. Thanks again for 
the patch.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Re: Patch for function/function_base.hpp

2003-02-13 Thread Douglas Gregor
On Thursday 13 February 2003 04:38 am, Daniel Frey wrote:
 Ah, that's the reason. But given my recent discomfort about
 unmaintainable code, look at it again:

   #  if BOOST_WORKAROUND(__HP_aCC, = 33900)
   templatebool cond, typename T struct enable_if;
   #  else
   templatebool, typename T struct enable_if;
   #  endif

 Does this really makes sense? Shouldn't we just keep one version with
 names for template parameters? AFAICS this should work for all compilers
 and it could be a general boost coding guideline to always provide names
 for template parameters. Comments?

FWIW, I didn't apply the patch directly but instead changed it to what you 
ask:
  templatebool cond, typename T struct enable_if;

I'd be fine with making this a coding guideline...

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Re: Re: Reflection system in C++ using templates

2003-02-13 Thread Douglas Gregor
On Thursday 13 February 2003 01:01 am, Lin Xu wrote:
 Attached is a prelimary replacement for function_traits.hpp. (When should I
 use the files section on yahoo? When should I attach? copy and paste code
 inline?)

If it's really short, post a context diff. If it's short, attach. If it's 
longer than short, put it in the sandbox or files section.

 I added specializations for member function pointers, and for those
 specializations, a typedef class_type which is the class type of the
 pointer. For no-PTS compilers I added a set of template functions for
 function pointers.

I would have expected that for member function pointers arg1_type would be
  typedef cv class_type* arg1_type;

(where cv is the cv-qualifiers from the member function pointer). 

 Unfortunely when I tried to test this by doing:
 cout  boost::functionvoid (A::*)()::arity  endl;
 The following errors occured:
 main.cpp: In instantiation of `boost::function_traitsvoid (A::*)()':
 main.cpp:33:   instantiated from here
 main.cpp:33: base class `boost::detail::function_traits_helpervoid
 (A::**)()'
has incomplete type
 It looks like the add_pointer doesn't know what to do with member function
 pointers.

It knows what to do, it just doesn't do what we want. The add_pointer should 
only be performed when is_pointerT::value is false. 

 This may affect many things, so I didn't touch anything else :)

 Would this affect boost::function? (from what I know it has some kind of
 member function pointer adaptor?)

It won't affect boost::function (which doesn't even use function_traits). 
boost::signal could be affect, but only if function_traits stops working for 
function types.

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] [PRB] boost.function and Visual Age

2003-02-13 Thread Douglas Gregor
On Thursday 13 February 2003 06:12 am, Markus Schöpflin wrote:
 Hi there,

 currently, boost.function and Visual Age don't get along very well.
 Unfortunately, I have no idea where to start in order to fix the problems.

 Could anyone please take a look at the regression logs and give me a
 hint where to start?

That doesn't look good at all. function_n_test is the first testcase to work 
on, but it's giving some frightening errors:

/home/auto/schoepf/src/extern/boost-cvs/libs/function/test/function_n_test.cpp, 
line 596.3: 1540-0130 (S) boost::function1 is not declared.
/home/auto/schoepf/src/extern/boost-cvs/libs/function/test/function_n_test.cpp, 
line 636.5: 1540-0130 (S) boost::function2 is not declared.

My first inclination would be to check the preprocessed output of the test, 
because it's possible that the preprocessor is failing miserably. Look for 
valid definitions of boost::function0, boost::function1, etc. (You can send 
me the preprocessed output privately if you'd like)

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] boost::ref for function objects

2003-02-13 Thread Douglas Gregor
On Thursday 13 February 2003 10:12 am, Peter Dimov wrote:
  --Compatibility--
  This version of ref.hpp is backwards-compatible with the existing
  version of
  ref.hpp on a compiler that can handle the new ref.hpp (needs partial
  specialization and proper SFINAE handling). At some point I'll write a
  stripped-down version that other compilers can handle.

 I tried to do this once and failed. It's hard to make operator() work on
 deficient compilers (esp. the zero-arg version that is not a template)
 without breaking ref(x) where x is not a function object.

Yep, this is the killer. Can't try to use result_type because it might not be 
there, can't detect result_type on broken compilers, and can't stop the 
declaration from being instantiated :(. Could just go with the limitation 
that arity 0 function objects won't work unless a return type is specified by 
the user.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Re: Re: Reflection system in C++ using templates

2003-02-12 Thread Douglas Gregor
On Wednesday 12 February 2003 01:08 am, Lin Xu wrote:
 Yeah, I guess it would. The syntax I had before was limited by my lack of
 knowledge about how to extract the arguments and return type from a
 classtype. But I can use function_traits right? But that requires partial
 template specialization. Is there a way to get the types without PTS? How
 does boost::function do it? Maybe I can mirror the syntax of
 boost::Function. But boost::function doesn't have the function pointer as
 an actual template parameter.

There is no known way to extract the argument types from function pointers or 
member function pointers without PTS. The class template boost::function only 
works when the compiler can handle it (which includes requiring PTS); 
otherwise the user is stuck with function0, function1, etc. 

 I dont' know how to make that syntax work. I did originally want syntax
 like that, but I didn't know how to write it without PTS (or a least
 support non-PTS compilers nicely).

Don't kill a good design because of bad compilers. 

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Patch for function/function_base.hpp

2003-02-12 Thread Douglas Gregor
On Wednesday 12 February 2003 12:37 pm, Markus Schöpflin wrote:
 Attached is a small patch for function_base.hpp. On line 302, there is
 a T missing.

 Markus

Thanks. Applied.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Patch for signals/trackable.hpp

2003-02-12 Thread Douglas Gregor
On Wednesday 12 February 2003 12:41 pm, Markus Schöpflin wrote:
 Attached is a small patch for signals/trackable.hpp. According to
 7.1.1(8), the mutable keyword cannot be applied on reference members
 and Visual Age flags this as an error. I just removed the mutable
 keyword an it compiles fine afterwards.

 Markus

Thanks again. Applied.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



[boost] boost::ref for function objects

2003-02-12 Thread Douglas Gregor
We've discussed making boost::ref/boost::cref work for arbitrary functions 
objects before. I just committed a version of ref.hpp that supports this 
ability to the sandbox. With this code, you can write:

  std::transform(c.begin(), c.end(), out, boost::ref(f));

or, if you don't want the return type deduced, specify it as in Boost.Bind:

  std::transform(c.begin(), c.end(), out, boost::reffloat(f));

Features of this implementation:
  - Return type deduction (discussed below)
  - Argument type deduction  (discussed below)
  - Able to handle function objects that have multiple arities (e.g., can be 
invoked with 0 or 2 arguments)

The implementation is here:
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/boost-sandbox/boost-sandbox/boost/ref.hpp?rev=HEADcontent-type=text/plain

Testcases are here:
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/boost-sandbox/boost-sandbox/libs/utility/ref_call_test.cpp?rev=HEADcontent-type=text/plain

--Return type deduction--
  - If the user specifies a return type, use it
  - Otherwise, if the class has a result_type typedef, use it
  - Otherwise, use Boost.Lambda-style sigarg_types::type

--Argument type deduction--  
  - If typedefs arg1_type, arg2_type, ..., argN_type are available, use 
_precisely_ those argument types (as in Boost.Function) to define 
operator()(arg1_type), operator()(arg1_type, arg2_type), etc, up to 'N' for 
that particular class.

  - Otherwise, if the class has an argument_type typedef, define 
operator()(const argument_type). If the class also has first_argument_type 
and second_argument_type, define 
  operator()(const first_argument_type, const second_argument_type);

  - Otherwise, if the class has first_argument_type and second_argument_type, 
define 
  operator()(const first_argument_type, const second_argument_type);

  - Otherwise, define a bunch of function templates that deduce the argument 
types at call time, e.g.,
templatetypename T1, typename T2, ..., typename TN
return-type-as-mentioned-before operator()(T1, T2, ..., TN);

There is always an operator() that takes no arguments.

--Compatibility--
This version of ref.hpp is backwards-compatible with the existing version of 
ref.hpp on a compiler that can handle the new ref.hpp (needs partial 
specialization and proper SFINAE handling). At some point I'll write a 
stripped-down version that other compilers can handle. The stripped-down 
version will feel a lot more like boost::bind:
  - Return type deduction will be limited to using a user-supplied return 
type, or else using ::result_type
  - Argument type deduction won't look for argN_types, argument_type, or 
first/second_argument_type, but will fall back to the set of function 
templates that deduce the argument types from the call.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] boost::ref for function objects

2003-02-12 Thread Douglas Gregor
On Wednesday 12 February 2003 07:15 pm, David Abrahams wrote:
 Douglas Gregor [EMAIL PROTECTED] writes:
  We've discussed making boost::ref/boost::cref work for arbitrary
  functions objects before. I just committed a version of ref.hpp that
  supports this ability to the sandbox. With this code, you can write:
 
std::transform(c.begin(), c.end(), out, boost::ref(f));

 What's the key feature?  Overloaded operator() on reference_wrapper?

Yes. 

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Re: Re: Reflection system in C++ using templates

2003-02-12 Thread Douglas Gregor
On Wednesday 12 February 2003 09:11 pm, Lin Xu wrote:
 Hm...
 - Functionvoid (A::*)(),A::Setz if the compiler supports PTS;
 - If not, then the user would have to type in something like:
 Function0void,A,A::Setz.

 Looks good. Another (slightly offtopic) thing. I attempted to use
 function_traits with a member function type. GCC spat out errors, and
 looking at the source code I don't think it *should* work anyway. Correct?
 If so, shouldn't there be an additional set of specializations for
 function_traits that specialize for member function pointers?

Right. function_traits was intended to work with function types (not function 
pointers, even), because that's what boost::function needed, but I'd be happy 
to see it extended to support member function pointers.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Patch for boost::array test failures?

2003-02-07 Thread Douglas Gregor
On Friday 07 February 2003 05:58 pm, Alisdair Meredith wrote:
 I have a potential patch for the boost::array tests that will pass under
 Borland 0x561 and probably under MSVC as well [I think it is the same
 issue]

 I am leary of resolving an issue by patching a test, but I think the
 issue is comparatively minor, especially in regard to most library use,
 and currently failing 40% of tests does not accurately reflect the case
 either.

 The problem is that borland (and likely MS) cannot use initialiser
 syntax for aggregates that are in turn made up of non-aggregate types.
 The failing tests (3  4) uses arrays of std::strings.  Switching to
 const char * on the broken compiler 'resolves' the issue.

 Hence the proposed patch: [from CVS diff logs]

I'm okay with this patch, but I would like to also keep a testcase that checks 
specifically for this failure so that we don't forget that this is indeed a 
potential problem for users. 

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] People and pictures?

2003-02-02 Thread Douglas Gregor
On Friday 31 January 2003 08:02 pm, Beman Dawes wrote:
 It seems to me one solution is to move the pictures to some location other
 than CVS. Probably the Boost SourceForge disk allotment.

 The capsule biographies would stay on the CVS, and thus would continue to
 be part of the web site and distribution files.

 Because adding a new biography will be much simpler, anyone with CVS write
 access would be able to do it. We'd have to write up a little guideline,
 but that shouldn't be a problem.

I like this solution best. No helpful comments from me, though :(

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] VC6 infinite loop with function/stateless_test

2003-01-30 Thread Douglas Gregor
On Thursday 30 January 2003 05:41 am, David Abrahams wrote:
 The subject says it all.  We should find a workaround for this or
 it'll screw up all vc6 testing pretty badly.

When did you first start seeing this? Last night? I didn't change anything...

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Usability of http://boost.sourceforge.net/regression-logs

2003-01-30 Thread Douglas Gregor
On Wednesday 29 January 2003 12:20 pm, David Abrahams wrote:
 It seems to me that while lib developers may be interested in the big
 table, most users, unless they care extraordinarily about
 portability, will want to know about individual compiler results.  I
 wonder if we shouldn't be assembling the HTML on-the-fly for all
 tables, and just having testers upload jam logs?  I know this goes
 against the grain of Beman's desire to produce the HTML with C++ code
 because of CGI portability issue, but I have the sense that until we
 have a true portable C++ virtual machine this might be the wrong kind
 of job for our favorite language.

 -Dave

One option would be to dump the tests in some XML format, because we can 
easily transform that into the various HTML pages we'd want with an XSLT 
processor. Sourceforge has xsltproc available on its servers...

[Yes, I'm beginning to sound like a broken record, but I really don't think we 
should ever be generating documentation directly from C++ code.]

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] VC6 infinite loop with function/stateless_test

2003-01-30 Thread Douglas Gregor
On Thursday 30 January 2003 11:05 am, David Abrahams wrote:
 Douglas Gregor [EMAIL PROTECTED] writes:
  On Thursday 30 January 2003 05:41 am, David Abrahams wrote:
  The subject says it all.  We should find a workaround for this or
  it'll screw up all vc6 testing pretty badly.
 
  When did you first start seeing this? Last night?

 Yes.

  I didn't change anything...

 I haven't run the test in weeks if not longer, so you might look
 backwards...

It passed yesterday on Beman's setup. I'll see if I can duplicate the problem 
here.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Usability of http://boost.sourceforge.net/regression-logs

2003-01-30 Thread Douglas Gregor
On Thursday 30 January 2003 11:05 am, David Abrahams wrote:
  [Yes, I'm beginning to sound like a broken record, but I really
  don't think we should ever be generating documentation directly from
  C++ code.]

 I can't see any relevance.  Care to explain?

I stated that _very_ poorly. I meant that I don't believe we should be writing 
HTML directly: not by ourselves for documentation, and not with C++ code for 
regression tests. As soon as we put data into HTML, we've lost most of the 
structure of the data. With documentation, losing structure means that it is 
harder to cross-reference information or pick out the most important 
information for a particular task; with the regression tests, we lose the 
ability to easily generate other kinds of regression test tables because all 
of the structure of the data was thrown out when the C++ program ended. I 
also find tweaking the HTML output from C++ code to be an unnecessarily 
time-consuming process.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Re: Re: is_base_and_derived question

2003-01-29 Thread Douglas Gregor
On Wednesday 29 January 2003 09:42 am, Daniel Frey wrote:
 // given some is_base_and_derived B, D ::value

 template typename T  struct is
 {
template typename U  struct derived_from
{ enum { value = is_base_and_derived U, T ::value };
template typename U  struct base_of
{ enum { value = is_base_and_derived T, U ::value };
 };

 // usage:

 is D ::derived_from B ::value
 is B ::base_of D ::value

 Thoughts?

 Regards, Daniel

It gets ugly in the common case (where D is a template parameter):
  isD::template derived_fromB::value 

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Proposal for any_cast to references

2003-01-21 Thread Douglas Gregor
On Tuesday 21 January 2003 04:24 pm, David Abrahams wrote:
 Unai Uribarri [EMAIL PROTECTED] writes:
  Currently, any_cast doesn't allow to cast to
  references. Instead, you have obscure castings from
  any* to T returning T*.

 That sounds like a design mistake on the face of it.

This comment has come up before, and everyone seems to agree that we'd prefer 
the semantics that Unai proposes. I think the only reason that we haven't 
changed the semantics is that we don't want to change Kevlin's design without 
hearing the reasons for the existing design. 

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



[boost] Re: [Boost-docs] Integrating BoostBook documentation withHTMLdocumentation

2003-01-20 Thread Douglas Gregor
On Monday 20 January 2003 01:44 pm, Beman Dawes wrote:
 I guess I'm still unsure how the generated HTML docs are going to be
 integrated with the rest of the web site and CVS.

 My understanding was that the docs in formats other than HTML would go on a
 separate web site, but that the source and HTML would be on the regular
 site. I assumed that also meant they would be in the regular CVS.

 --Beman

I'm going to assume that library documentation for a particular release is not 
changed after the release. This is the way we do things now---www.boost.org 
has the library documentation for 1.29.0. When we release 1.30.0, it will 
have the 1.30.0 documentation and won't change until we release another 
version. So here is the suggestion:

The documentation source (BoostBook format) will be in CVS. Whatever the 
stable documentation from the last release is, it will be on the regular site 
(www.boost.org). On another site (currently www.cs.rpi.edu), there will be a 
nightly script that keeps an up-to-date CVS tree and regenerates 
documentation in various formats (including HTML) from CVS. The main page at 
www.boost.org would look something like this:

  http://www.cs.rpi.edu/~gregod/boost/index.htm

Instead of a single Documentation link, we have a link to the documentaiton 
for the most recently released Boost version, which will be to a local copy 
of the documentation (e.g., doc/html/libraries.html or libs/libraries.htm). 
The documentation is static---it may have been generated for the release, but 
it won't change after that. The second link, CVS, will always go to 
www.cs.rpi.edu/~gregod/boost/doc/html/libraries.html (or wherever the nightly 
documentation generation puts the result). 

If a user is using Boost from CVS and wants a local copy of the HTML 
documentation, they should download boost-doc-html.tar.gz and extract it in 
the same place they checkout Boost CVS. Then the first link under 
documentation (for the current version) will reference the documentation they 
download.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Re: Re: Re: Policy-based smart pointers revisisted

2003-01-20 Thread Douglas Gregor
On Monday 20 January 2003 09:25 pm, Paul Mensonides wrote:
 - Original Message -
 From: Edward Diener [EMAIL PROTECTED]

  People disagree with others all the time based on their technical
  understanding. No one's opinion is exempt from reasonable discussions or
  arguments over what someone else perceives as the correct solution to a
  technical problem.

 In the example I mention, which was the sequence abstraction design of the
 MPL, there was a massive debate on the pros and cons of that design.
 Ultimately, I consensus was never reached because everybody got tired of
 arguing.  That said, the design was (and probably still is) untested in
 real code, whereas the simpler design was.  To that end, Andrei asked
 anyone to convince him with a practical code sample that justified the
 design.  It never happened.  We had a severe case of several experts
 fundamentally disagreeing.  The only possible resolution was to display the
 validity of the design with an example, but instead, Andrei's concerns
 where disregarded altogether, and he was basically told to deal with it.

Andrei's concerns were not disregarded. I acted as review manager for MPL when 
this discussion occurred, and I considered Andrei's comments along with the 
comments of every other reviewer prior to rendering a decision. In the review 
results, I commented that the usefulness of the iterator abstraction was not 
proven, and that only additional experience with the library would tell 
whether or not the abstraction is useful. You may read my comments here, if 
you would like:

  http://aspn.activestate.com/ASPN/Mail/Message/1341450

Andrei's opinion was in the minority, but it was not dismissed. 

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Live summary of regression tests.

2003-01-19 Thread Douglas Gregor
On Sunday 19 January 2003 09:14 pm, Rene Rivera wrote:
 In order to make regression test browsing more pleasant for all of us. I
 decided to work up a little script to gather up all the test results that
 get posted to the boost.sourceforge.net site. So browse on over to:

 http://boost.sourceforge.net/regression-logs

 ..and take a look.

Very nice! Do we get dancing monkey graphics if we hit 100% pass?

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



[boost] Re: [Boost-docs] Integrating BoostBook documentation withHTMLdocumentation

2003-01-19 Thread Douglas Gregor
On Sunday 19 January 2003 08:25 pm, Beman Dawes wrote:
 I'd like to see a bit more refinement first, and understand how the
 maintenance works.

 Let's take the last first. What does a developer do to add a new library?

If the library documentation is in the BoostBook format, just make sure the 
Boost documentation includes the BoostBook source (e.g., by adding an 
appropriate xi:include element to boost.xml).

If the library documentation is in HTML, the developer needs to add a library 
description to the file boost-sandbox/libs/documentation/examples/boost.xml. 
A library description looks like this:

  library name=Compressed Pair dirname=utility html-only=1
   url=../../libs/utility/compressed_pair.htm
libraryinfo
  author
firstnameJohn/firstname
surnameMaddock/surname
  /author
  author
firstnameHoward/firstname
surnameHinnant/surname
  /author
  librarypurposeEmpty member optimization/librarypurpose
  librarycategory name=category:data-structures/
  librarycategory name=category:misc/
/libraryinfo
  /library

I think the above is relatively self-explanatory. The library category names 
are in the same file (boost.xml), and are each defined like this:

librarycategorydef name=category:string-text
  String and text processing
/librarycategorydef

 As far as refinement goes:

 * Why the bloat of breaking libraries.html up into multiple files? For me,
 at least, this reduces the quality of the browsing experience.

That's mostly an issue with the way I'm using DocBook. Will fix.

 * The navigation header and footer need more work, IMO:

 -- Some color and general site navigation help. If you don't like the
usual Boost intermediate level page header (see the current
libraries.htm), design another one. But the page needs something
to give it a bit of life, identification with Boost, navigation
back to home, etc.

Will do. Sprucing up the headers has been on the task list for a while, but 
nobody has yet to take on the challenge :)

 -- Footer should have a revised date. I like the horizon rule, too.

A generated date would be easy; a revised date isn't so easy, because it's 
not trivial to figure out when something used in the list changed.

 -- Personally, I dislike prev and next links in general, and
particularly those that give no indication of what they are linking
to. Hovering the cursor to see the link URL helps a bit, but only a
little.

The footer is much better than the header in this regard, because it actually 
gives names. 

 * Have you tried single spacing the alpha and by category lists? The old
 single spacing seems a tiny bit easier to scan, although that is obviously
 very subjective.

Done. I think it does look better.

 * The formatting of the HTML isn't very human reader friendly. Would it be
 possible to do a bit of formatting?

I'm not sure. XSLT does have an indent property when transforming to another 
XML document, but AFAIK it's not considered safe to use when spacing is 
important. And spacing _is_ important, especially within the reference 
documentation.

 Have you check to verify there won't be any CVS churn once this becomes
 something that is checked into CVS? (Unless, of course, there is a real
 change on the page.)

I'm not expecting this page to go into CVS, but to be autogenerated nightly 
along with the rest of the documentation. 

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] [signals] Minor doc bug?

2003-01-10 Thread Douglas Gregor
On Thursday 09 January 2003 07:43 pm, David B. Held wrote:
 Under: Passing values to and from slots in tutorial.html, it looks
 like the old syntax is being used:

 boost::signalvoid, float, float sig;

 The tables are correct.  Only the references in the text appear
 wrong.

 Dave

Thanks! The fix is now in CVS.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] [C++-sig] weird bug of addressofT in MSVC 7

2003-01-07 Thread Douglas Gregor
On Tuesday 07 January 2003 06:08 pm, David Abrahams wrote:
 This compiler bug was reported on the Python/C++-sig.  Probably we
 should stick a const_cast in addressof just for vc7?

Would you mind doing it? I don't have access to VC7 to test any changes.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Regression test program compiler_status slightlymodified...

2003-01-03 Thread Douglas Gregor
On Friday 03 January 2003 11:43 am, Beman Dawes wrote:
 At 11:57 PM 1/2/2003, Douglas Gregor wrote:
  I've (slightly) modified the compiler_status program to search
  boost/status/testsuites.jam in addition to boost/status/Jamfile when

 trying

  to determine the type of a test. I think this will fix the problems with
  the testsuites generated from the BoostBook testsuite descriptions.

 Thanks! Compiled fine. Win32 tests being run now.

 --Beman

Didn't work. Looks like I managed to omit a very necessary patch to 
boost/status/Jamfile. It's there now, so I believe that the regression tests 
should be back in working order after the next cvs update. (If it works, 
you'll notice a lot more Function testcases)

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



[boost] Location of generated documentation in Boost tree?

2002-12-29 Thread Douglas Gregor
Where in the Boost tree should we put generated documentation? I'm ready to 
the use some of the documentation generated from C++XML/DocBook as the 
documentation for some of my libraries, but I would first like to establish 
some conventions. I suggest:
  - We create a directory boost/doc that will contain generated Boost 
documentation. This directory will have subdirectories for each documentation 
format (e.g., doc/html, doc/man, doc/pdf).
  - We create forwarding pages libs/library-name/index.html and 
libs/library-name/doc/index.html that reference the generated 
documentation.
  - We place the C++XML/DocBook sources for each library in 
libs/library-name/doc_src
  - We place the top-level DocBook sources in boost/doc_src

Doug

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Re: Re: boost::function MSVC

2002-12-20 Thread Douglas Gregor
On Friday 20 December 2002 08:14 am, Steven Ketcham wrote:
 Yes, every thing (STL stuff) works except boost. Turning off the STL filter
 made no difference. It only captures output and filters it. I am left with
 the impression that the #defines are wrong for my particular setup. Please
 remember that this is a brand new Win2000 install with all the patches, the
 new platform SDK and IE 6.0. I skipped 5.5 IE.

Ah ha! I know the platform SDK has been known to cause some weird problems 
(this happened to at least one user of the Boost.Python lib). The platform 
SDK path needs to be first in the list of paths to the compiler. This page on 
the Wiki tells how one user did it:

  http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?MsVc6

 Are there any library differences between WinXP and Win2000?

Not that I know of, but I'm no expert on the Windows development platform.

Doug


___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Formal review: Optional library

2002-12-19 Thread Douglas Gregor
On Monday 09 December 2002 11:55 am, Douglas Gregor wrote:
 The formal review of Fernando Cacciola's Optional library begins today and
 runs until the end of Wednesday, December 18.

The review of Fernando Cacciola's Optional library has ended. I will post 
review results this weekend. A hearty thank you goes to all reviewers.

Doug Gregor
[EMAIL PROTECTED] (Optional review manager)
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] boost::function MSVC

2002-12-19 Thread Douglas Gregor
On Thursday 19 December 2002 12:25 pm, Steven Ketcham wrote:
 boost_1_29_0\boost\function\function_template.hpp(73): error C2061: syntax
 error : identifier 'any_pointer'

 boost_1_29_0\boost\function\function_template.hpp(79):
see reference to class template instantiation
 'boost::detail::function::function_invoker0FunctionPtr,R' being compiled

 Hopefully this is obvious. Any suggestions?

That's a really strange error, because it appears that 
boost::detail::function::any_pointer (defined in 
boost/function/function_base.hpp) never actually got defined. Have you tried 
re-extracting the Boost archive just in case something got mangled? (Note: I 
can't check your sample code at the moment, but you're using almost precisely 
the same configuration that I test on, and this problem has never come up).

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Re: boost::function MSVC

2002-12-19 Thread Douglas Gregor
On Thursday 19 December 2002 03:36 pm, Steven Ketcham wrote:
   ** {BD Software Proxy CL v2.29} STL Message Decryption is ON! **

I'm beginning to suspect this little program (or perhaps the installation of 
MSVC). The errors you are getting are in libraries that are well-tested on 
your configuration (minus the STL Message Decryption). Do other non-Boost C++ 
programs compile? Can you try Boost without the STL message decryption?

Doug


___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] RE: Function Binding

2002-12-16 Thread Douglas Gregor
On Monday 16 December 2002 01:39 am, Greg Dehaas wrote:
 //Macros for binding functions + methods
 #define BINDMETHOD5(object,function)
 boost::bind(function,object,_1,_2,_3,_4,_5)
 #define BINDFUNCTION5(function) boost::bind(function,_1,_2,_3,_4,_5)
 #define BINDMETHOD4(object,function)
 boost::bind(function,object,_1,_2,_3,_4)
 #define BINDFUNCTION4(function) boost::bind(function,_1,_2,_3,_4)
 #define BINDMETHOD3(object,function) boost::bind(function,object,_1,_2,_3)
 #define BINDFUNCTION3(function) boost::bind(function,_1,_2,_3)
 #define BINDMETHOD2(object,function) boost::bind(function,object,_1,_2)
 #define BINDFUNCTION2(function) boost::bind(function,_1,_2)
 #define BINDMETHOD1(object,function) boost::bind(function,object,_1)
 #define BINDFUNCTION1(function) boost::bind(function,_1)
 #define BINDMETHOD(object,function) BINDMETHOD1(object,function)
 #define BINDFUNCTION(function) BINDFUNCTION1(object,function)

The BINDFUNCTION macros aren't actually needed. Anywhere that you would have:

  boost::functionN... f;
  f = BINDFUNCTION(g);

You could have just written:
  boost::functionN... f;
  f = g;

I'd also strongly suggest that you don't use the BINDMETHOD macros, because 
sooner or later you'll find yourself needing to use more of bind's features.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Proposal: Identifying libraries

2002-12-16 Thread Douglas Gregor
On Monday 16 December 2002 09:17 am, Beman Dawes wrote:
 I'd like to propose changing that (particularly for headers) to:

 // See http://www.boost.org/library-name for documentation.

I assume you mean http://www.boost.org/libs/library-name;?

 and require that it be the first instance of http://www.boost.org/; in a
 source file.

 That will make it easy to associate a header with the library it belongs
 to, and may also help users reach documentation quickly.

 Comments?

 --Beman

Sounds good. I think we should try to do the conversion automatically, at 
least for all files in subdirectories (e.g., the file boost/xxx/yyy.hpp would 
be assumed to be a part of library xxx if libs/xxx exists) and for files 
boost/xxx.hpp where there is a library in libs/xxx. We don't want to do this 
conversion by hand :)

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] function binding

2002-12-13 Thread Douglas Gregor
On Friday 13 December 2002 07:21 am, Greg Dehaas wrote:
 So far, I've got something like this:

  CODE ---
 #include boost/function.hpp
 #include functional

 //Simple Class
 class CSimple
 {
 public:
   void SimpleMethod()
   {
   printf(Simple Method Called\n);
   }
 };

 //Entry point
 void main()
 {
   boost::functionvoid oSimpleMethod;

   oSimpleMethod =
 std::bind1st(std::mem_fun(CSimple::SimpleMethod),oSimple);

   oSimpleMethod();
 }

 Now it seems like it's to do with the way I'm trying to use std:bind1st
 (which I've never used before)
 However, the boost documentation shows examples doing exactly what I'm
 doing!?!

 Can anyone spot the mistake?

 Greg

 PS: I'm using VC++ 6

bind1st only works for binary function objects, but SimpleMethod is only 
unary. The example in the Boost.Function documentation actually has a method 
taking an int parameter, so it works. It's quite silly, actually, that 
bind1st is so limited.

Anyway, with MSVC you'll want to use Boost.Bind along with Boost.Function. The 
code will look like this:

  boost::function0void oSimpleMethod;
  oSimpleMethod = boost::bind(CSimple::SimpleMethod, oSimple);
  oSimpleMethod();

Other than the bind change (it's much cleaner using Boost.Bind!), I've changed 
boost::function to boost::function0 because MSVC can't currently handle 
the boost::function class template very well. ('0' is the number of function 
parameters it takes).

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



[boost] Formal review: Optional library

2002-12-09 Thread Douglas Gregor
The formal review of Fernando Cacciola's Optional library begins today and 
runs until the end of Wednesday, December 18.

The Optional library provides a class template optionalT that either 
contains a value of type T or contains no value (i.e., having a value is 
optional). It is useful, for example, as the return type of functions that 
may or may not return a value, depending on their inputs.

The Optional library can be downloaded from the Boost files section:
  http://groups.yahoo.com/group/boost/files/optional.zip

Please state in review comments whether or not you believe that the library 
should be accepted into Boost. Further guidelines for writing reviews can be 
found here:
  http://www.boost.org/more/formal_review_process.htm#Comments

Thank you,
Doug Gregor (Optional (but not uninitialized) review manager)
  
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] [Config] Testing instructions for compiler vendors

2002-12-07 Thread Douglas Gregor
On Saturday 07 December 2002 06:47 am, John Maddock wrote:
 Maybe we need something new for those folks: something like
 BOOST_NO_WORKAROUNDS or whatever, that disables all compiler workarounds?
 To keep things centralised BOOST_NO_WORKAROUNDS should be defined by the
 compiler config when the compilers version is greater than the last known
 version and BOOST_STRICT_CONFIG is set, then boost workaround-code need
 only check for the presence of BOOST_NO_WORKAROUNDS or whatever in addition
 to the compiler version.

 How does this sound?

 John Maddock
 http://ourworld.compuserve.com/homepages/john_maddock/index.htm

I like it.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] BOOST_NO_CONFIG

2002-12-05 Thread Douglas Gregor
On Wednesday 04 December 2002 08:53 am, David Abrahams wrote:
 It looks like some people (ahem! wink) have been using
 BOOST_NO_CONFIG where they should be using BOOST_STRICT_CONFIG. See
 boost/function/function_base.hpp.

Oops. Fixed now. 

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] BOOST_NO_CONFIG

2002-12-05 Thread Douglas Gregor
On Thursday 05 December 2002 08:51 am, David Abrahams wrote:
 Douglas Gregor [EMAIL PROTECTED] writes:

 F On Wednesday 04 December 2002 08:53 am, David Abrahams wrote:
  It looks like some people (ahem! wink) have been using
  BOOST_NO_CONFIG where they should be using BOOST_STRICT_CONFIG. See
  boost/function/function_base.hpp.
 
  Oops. Fixed now.

 Well, now John Maddock may be quarrelling with you over the correct
 approach. We need to decide how this will work.

 -Dave

It seems like places that need BOOST_(STRICT|NO)_CONFIG in the source don't 
fit the documentation for either macro. BOOST_STRICT_CONFIG just tells the 
config system how pessimistic to be w.r.t. new compiler versions. 
BOOST_NO_CONFIG tells the config system not to include any of its 
configuration headers (i.e., don't define any defect/extension macros). 

As it stands now, I think the right way to write 
compiler/library/platform-dependent workarounds is to check for _both_ 
BOOST_STRICT_CONFIG and BOOST_NO_CONFIG. BOOST_STRICT_CONFIG disables the 
workaround when dealing with a new compiler version, whereas BOOST_NO_CONFIG 
disables the workaround when the user has asked not to configure for the 
compiler. Maybe BOOST_NO_CONFIG (actually, BOOST_NO_COMPILER_CONFIG) should 
define BOOST_STRICT_CONFIG?

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] [Config] Testing instructions for compiler vendors

2002-12-05 Thread Douglas Gregor
On Thursday 05 December 2002 02:41 pm, David Abrahams wrote:
 I propose:

 #ifndef BOOST_STRICT_CONFIG
 # define BOOST_WORKAROUND(symbol, test) (defined(symbol)  symbol
 test) #else
 # define BOOST_WORKAROUND(symbol, test) 0
 #endif

 Comments?

I'm still not sure that BOOST_STRICT_CONFIG is the right macro to determine if 
workarounds are enabled or not, but if John agrees then I'm happy with it. 
Regardless of what macro determines which BOOST_WORKAROUND is used, I like 
the above definition (+ dumb compiler workarounds).

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] SourceForge Vandalism

2002-12-04 Thread Douglas Gregor
On Wednesday 04 December 2002 09:54 am, David Abrahams wrote:
 The Scons Wiki was recently vandalized. This is just a reminder about
 our exposed assets. If you have open-source resources which ought to
 be backed up, this might be a good time...

Jeff, is our Wiki backed up at regular intervals?

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] Re: functor adapter

2002-11-22 Thread Douglas Gregor
On Friday 22 November 2002 10:53 am, Martin Bosticky wrote:
 Thanks wery much for both commets, Douglas and Peter

 I will have a look at bind and lambda libraries but i remember i had
 trouble using the lambda library under VC6 together with bind1st

 Martin.

Bind will work on VC6, Lambda will not.

Doug
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



  1   2   >