Opened 9 years ago
Closed 7 years ago
#9468 closed Bugs (fixed)
Missing include in boost/spirit/home/qi/string/detail/tst.hpp
| Reported by: | Owned by: | Joel de Guzman | |
|---|---|---|---|
| Milestone: | To Be Determined | Component: | spirit |
| Version: | Boost 1.52.0 | Severity: | Problem |
| Keywords: | Cc: |
Description
boost 1.52 on FreeBSD 10.0.
boost/spirit/home/qi/string/tst_map.hpp has a forward declaration of struct tst_pass_through (which is actually declared in boost/spirit/home/qi/string/tst.hpp), however structure's operator() is called in tst_map::find():
return find(first, last, tst_pass_through());
This obviously won't compile due to incomplete type. This was discovered on boost 1.52, but since tst_map.hpp haven't changed since then in boost trunk, the bug still exists and needs fixing.
Test program:
#include <boost/spirit/home/qi/string/tst_map.hpp>
int main() {
boost::spirit::qi::tst_map<char, int> map;
int* x;
map.find(x, x);
return 0;
}
clang output:
In file included from test.cc:1:
/usr/local/include/boost/spirit/home/qi/string/tst_map.hpp:74:38: error: invalid use of incomplete type 'boost::spirit::qi::tst_pass_through'
return find(first, last, tst_pass_through());
^~~~~~~~~~~~~~~~~~
/usr/local/include/boost/spirit/home/qi/string/tst_map.hpp:20:12: note: forward declaration of 'boost::spirit::qi::tst_pass_through'
struct tst_pass_through; // declared in tst.hpp
^
1 error generated.
gcc output:
In file included from test.cc:1:0:
/usr/local/include/boost/spirit/home/qi/string/tst_map.hpp: In instantiation of 'T* boost::spirit::qi::tst_map<Char, T>::find(Iterator&, Iterator) const [with Iterator = int*; Char = char; T = int]':
test.cc:6:15: required from here
/usr/local/include/boost/spirit/home/qi/string/tst_map.hpp:74:56: error: invalid use of incomplete type 'struct boost::spirit::qi::tst_pass_through'
return find(first, last, tst_pass_through());
^
/usr/local/include/boost/spirit/home/qi/string/tst_map.hpp:20:12: error: forward declaration of 'struct boost::spirit::qi::tst_pass_through'
struct tst_pass_through; // declared in tst.hpp
^
Patch is attached.
Attachments (1)
Change History (5)
by , 9 years ago
| Attachment: | tst_map.hpp.patch added |
|---|
comment:1 by , 7 years ago
comment:2 by , 7 years ago
Could you please issue a Pull Request instead? That way, we can keep track of contributors:
make sure you do it against develop.
comment:4 by , 7 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |

Still present in Boost 1.55, FreeBSD 10.2 ...