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