Opened 13 years ago
Closed 7 years ago
#3358 closed Bugs (fixed)
return type of functions incorrect
Reported by: | anonymous | Owned by: | Joel de Guzman |
---|---|---|---|
Milestone: | Boost 1.40.0 | Component: | fusion |
Version: | Boost 1.38.0 | Severity: | Problem |
Keywords: | const return | Cc: |
Description
maybe only documented incorrectly, but given the error messages it still takes a few years to figure that out.
e.g. push_back, documented as: typename result_of::push_back<Sequence, T>::type push_back(
Sequence const& seq, T const& t);
when it's actually typename result_of::push_back<Sequence const, T>::type
push_back(Sequence const& seq, T const& x)
note the const. I'm not sure why the const is there, but if it is really intended that: result_of::push_back<seq_t,int>::type res=push_back(seq,4); should result in an error, this should be a major part of the documentation.
Change History (4)
follow-up: 2 comment:1 by , 13 years ago
comment:2 by , 7 years ago
Fixed by https://github.com/boostorg/fusion/pull/106 .
Replying to steven_watanabe:
Actually, I think it would be better if fusion::push_back were overloaded to allow either const or non-const arguments, like
template <typename Sequence, typename T> inline typename result_of::push_back<Sequence, T>::type push_back(Sequence & seq, T const& x); template <typename Sequence, typename T> inline typename result_of::push_back<Sequence const, T>::type push_back(Sequence const& seq, T const& x);
It will be handled in #3954.
comment:4 by , 7 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Actually, I think it would be better if fusion::push_back were overloaded to allow either const or non-const arguments, like
Regardless, result_of::push_back ought to work correctly for non-const arguments. If push_back always adds const, then so should result_of::push_back.