forked from boostorg/fusion
updated todo
[SVN r37240]
This commit is contained in:
121
todo.txt
121
todo.txt
@ -1,7 +1,126 @@
|
|||||||
* Consider object equivalent of functions and algorithms (so you can do transform(iterators, deref()) with needing to put together a wrapper for deref).
|
* Consider object equivalent of functions and algorithms (so you can do
|
||||||
|
transform(iterators, deref()) with needing to put together a wrapper for deref).
|
||||||
|
|
||||||
* Consider segmented sequence / algorithm support
|
* Consider segmented sequence / algorithm support
|
||||||
|
|
||||||
* Consider utility element_ref<Seq,Member>::type thats consts and refs as appropriate
|
* Consider utility element_ref<Seq,Member>::type thats consts and refs as appropriate
|
||||||
|
|
||||||
* Improved motivation section
|
* Improved motivation section
|
||||||
|
|
||||||
* Expand details of view concept
|
* Expand details of view concept
|
||||||
|
|
||||||
* Examples, examples, examples
|
* Examples, examples, examples
|
||||||
|
|
||||||
* look at lambda stuff
|
* look at lambda stuff
|
||||||
|
|
||||||
|
* The error messages when e.g. the function is not set as const are difficult
|
||||||
|
to decipher. e.g. transform(s, f) <<- where f has a non-const operator()
|
||||||
|
|
||||||
|
* mpl, fusion, container type preserving operations incompatible
|
||||||
|
-- shall we consider container-type preserving variations of the
|
||||||
|
functions/algorithms?
|
||||||
|
|
||||||
|
* map_tie is implemented. It seems not yet documented?
|
||||||
|
|
||||||
|
* multi_set, multi_map?
|
||||||
|
|
||||||
|
* why is insert_range not spelled insert_sequence ?
|
||||||
|
|
||||||
|
* Document the new fusion extension mechanisms
|
||||||
|
->iterator_facade
|
||||||
|
->sequence_facade
|
||||||
|
|
||||||
|
* David A:
|
||||||
|
Wouldn't extension be a lot easier if iterator_base and sequence_base
|
||||||
|
took (optional) 2nd arguments that specify the tag? Then you wouldn't
|
||||||
|
need that whole dance that enables tag dispatching (right?)
|
||||||
|
|
||||||
|
* David A: is_iterator isn't documented?
|
||||||
|
JDG: There is no is_iterator ;) There is is_fusion_iterator, but it should
|
||||||
|
probably be placed in detail.
|
||||||
|
|
||||||
|
* for_each takes the function object by reference to const, so you have to
|
||||||
|
const qualify operator() and make the data members mutable so you can change
|
||||||
|
them anyway.
|
||||||
|
Eric N: IMO, this is a bug in Fusion. There should be an overload of for_each
|
||||||
|
that takes a function object by non-const reference. Stateful predicates should
|
||||||
|
be supported, and Fusion should be explicit about where and when predicates
|
||||||
|
are copied, so that the state doesn't get messed up.
|
||||||
|
|
||||||
|
* Make Boost.parameters library's ArgumentPacks a conforming fusion sequence
|
||||||
|
|
||||||
|
* Optimize container performance with typeof / compiler defect typeof. In particular
|
||||||
|
improve the performance of the prototype deque implementation.
|
||||||
|
|
||||||
|
* Deque docs if we decide we like it
|
||||||
|
|
||||||
|
* Rewrite the whole extension docs section. More formal docs of extension point,
|
||||||
|
example to use the various facade types, rather than hand coding everything.
|
||||||
|
|
||||||
|
* zip optimization - Zip is rather compiler heavy, try and reduce the likelihood
|
||||||
|
of compilers like msvc7 hitting internal compiler limits
|
||||||
|
|
||||||
|
* Document the unused support added to zip for Hartmut.
|
||||||
|
|
||||||
|
* Rationalize support/unused.hpp and the ignore stuff needed for tie etc.
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
|
||||||
|
From the fusion review (please mark all done items):
|
||||||
|
|
||||||
|
The following comments refer to issues that the library authors should
|
||||||
|
address prior to merging the library into CVS:
|
||||||
|
|
||||||
|
* Documentation: Many of the reviewers stated that they would like to
|
||||||
|
see more tutorial documentation that demonstrates not only what the
|
||||||
|
particular constructs in Fusion do, but also how they are expected
|
||||||
|
to be used. A reasonably concise motivating example has been
|
||||||
|
requested. It has already been pointed out that Fusion is used for
|
||||||
|
some other boost libraries. A well-developed and self-contained
|
||||||
|
case study of when and how to use Fusion would be greatly
|
||||||
|
appreciated. The relationship between this library and the current
|
||||||
|
Boost.Tuple library, as well as Boost.Mpl, should be discussed. The
|
||||||
|
reference documentation is quite thorough and detailed comments
|
||||||
|
regarding them have already been addressed by the authors. However
|
||||||
|
the notion of "views" requires greater documentation. The
|
||||||
|
examples in the algorithm sections currently do little more than
|
||||||
|
demonstrate the syntax by which they can be called. Examples that
|
||||||
|
more specifically express intent would be a notable
|
||||||
|
improvement. (see for example Matt Austern's "Generic Programming
|
||||||
|
and the STL"). In general the documentation would benefit from
|
||||||
|
copy-editing.
|
||||||
|
|
||||||
|
* Several commented on the use of the name "pair" for the fusion type
|
||||||
|
that has typedefs for two types but only contains the second type.
|
||||||
|
Although the typedefs and member names are consistent with the
|
||||||
|
std::pair object, the name "pair" is confusing. The
|
||||||
|
compile-time/run-time hybrid nature of this library makes it
|
||||||
|
difficult to find perfect metaphors for constructs in the library.
|
||||||
|
In this case, it seems better to find a term for this template (and
|
||||||
|
the concept that it models) that more directly states its purpose.
|
||||||
|
The name "tag_of" would also benefit from renaming.
|
||||||
|
|
||||||
|
* The behavior of Fusion functions in the face of argument-dependent
|
||||||
|
lookup (ADL) is not well specified. This should be made
|
||||||
|
explicit in the reference documentation.
|
||||||
|
|
||||||
|
The following comments refer to issues that, while not mandatory,
|
||||||
|
deserve consideration:
|
||||||
|
|
||||||
|
* The library name "Fusion", though not arbitrary, says little about
|
||||||
|
the library's purpose. There is precedent for this within boost,
|
||||||
|
however. A name change is not mandatory for the
|
||||||
|
library's acceptance, but it would be worth while for the authors to
|
||||||
|
consider a more telling name.
|
||||||
|
|
||||||
|
* The mechanism for extending Fusion with new containers and iterators
|
||||||
|
is complex and involves implementing a number of components,
|
||||||
|
especially regarding iterators. An adaptation layer that is
|
||||||
|
analogous to the Boost.Iterator library would be a fine addition to
|
||||||
|
Fusion.
|
||||||
|
|
||||||
|
* It would be beneficial to supply Boost.Serialization support for the
|
||||||
|
Fusion container types. I am sure, as mentioned, that the authors
|
||||||
|
of this library would accept a volunteer to implement this
|
||||||
|
functionality.
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user