Re: [fusion] Proposal for deprecating fusion.tuple.

Lee Clagett <[email protected]>
Newsgroups gmane.comp.parsers.spirit.general
Message-ID <20170929101743.41f98660@laptop-m1330>
On Thu, 28 Sep 2017 23:43:47 +0900
Kohei Takahashi <[email protected]> wrote:

> Hi all,
> 
> I propose deprecating fusion.tuple, it makes fusion.vector
> implementation complex.
> 
> fusion.tuple provides TR1 style std::tuple (experimental)
> implementation but we already have truly std::tuple, and some other
> TR1-ism feature, especially Boost.TR1, had been removed or deprecated.
> 
> I did grep and got file list which include fusion.tuple:
> 
>     hana/benchmark/including/fusion.erb.cpp
>     hana/example/ext/boost/fusion/tuple.cpp
>     hana/include/boost/hana/ext/boost/fusion/tuple.hpp
>     hana/include/boost/hana/ext/boost/fusion.hpp
>     hana/test/_include/auto/README.md
>     hana/test/ext/boost/fusion/tuple/auto/_specs.hpp
>     hana/test/ext/boost/fusion/tuple.cpp
>     math/include/boost/math/tools/tuple.hpp
>     math/test/test_root_finding_concepts.cpp
>     phoenix/test/scope/let_tests.cpp
>     phoenix/test/scope/let_tests_113.cpp
>     phoenix/test/scope/let_tests_113a.cpp
>     phoenix/test/scope/let_tests_157.cpp
>     phoenix/test/scope/let_tests_157a.cpp
>     phoenix/test/scope/let_tests_rest.cpp
>     phoenix/test/scope/more_let_tests.cpp
>     phoenix/test/scope/more_let_tests1.cpp
>     phoenix/test/scope/more_let_tests2.cpp
>     phoenix/test/scope/more_let_tests2a.cpp
>     phoenix/test/scope/more_let_tests2b.cpp
>     process/include/boost/process/detail/execute_impl.hpp
>     proto/example/mini_lambda.cpp
>     proto/test/examples.cpp
>     proto/test/lambda.cpp
>     proto/test/make_expr.cpp
>     spirit/test/qi/regression_fusion_proto_spirit.cpp
>     spirit/test/qi/regression_transform_assignment.cpp
> 
> I didn't check how they used it, but it seems only testing or
> adapting. So, I think the deprecation is not so big deal.
> 
> Any thought?
> 
> Thanks,
> Kohei Takahashi
> 
> 

How does `fusion::tuple` make `fusion::vector` implementation more
complex? Are you referring to the C++03 or C++11 version?

For C++11 `fusion::tuple` I noticed that if the assignment from fusion
sequences was removed (its constructor currently does not allow
conversion from sequences and `std::tuple` has no such requirement),
then the headers automatically included could be reduced. So
`fusion::tuple` _could_ be a faster compiling sequence for when the
conversion properties of `fusion::vector` was not needed. Of course,
since most have a good implementation of `std::tuple` perhaps this
unnecessary? I would like to point out that recent tweaks to
`fusion::vector` have [improved performance over libstdc++ `std::tuple`
in construction][0][1].

Anyway, the bigger issue with deprecation will be on users of Boost.
Hopefully the fix would be easy - just change to another sequence type.
I'm not aware of an situations where this is _not true_ (i.e. where
deprecation would cause major code re-write for Boost users).

Lee

[0] http://metaben.ch/hetero/clang++-4.0/make/index.html
[1] http://metaben.ch/hetero/g++-7/make/index.html

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.