|
Boost Users : |
From: Ken Smith (kgsmith_at_[hidden])
Date: 2008-05-09 21:10:22
Here is my environment.
% g++ -v
Using built-in specs.
Target: i686-apple-darwin9
Configured with: /var/tmp/gcc/gcc-5483~1/src/configure
--disable-checking -enable-werror --prefix=/usr --mandir=/share/man
--enable-languages=c,objc,c++,obj-c++
--program-transform-name=/^[cg][^.-]*$/s/$/-4.0/
--with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib
--build=i686-apple-darwin9 --with-arch=apple --with-tune=generic
--host=i686-apple-darwin9 --target=i686-apple-darwin9
Thread model: posix
gcc version 4.0.1 (Apple Inc. build 5483)
Boost 1.35.0
(also produced same issue with Boost 1.34.1)
Here is the code.
1 #include <boost/lambda/lambda.hpp>
2 #include <boost/lambda/construct.hpp>
3 #if defined(INCLUDE_BOOST_BIND)
4 # include <boost/bind.hpp>
5 #endif
6 #include <iostream>
7 #include <iterator>
8 #include <algorithm>
30
31 int main()
32 {
33 using namespace std;
34 using namespace boost::lambda;
35
36 typedef std::istream_iterator<int> in;
37 std::for_each(in(std::cin), in(), std::cout << (_1 * 3) << " " );
76 }
(The astute reader will note discontinuity in the line numbering.
This is a playground for my exploration with boost. All elided lines
are #if 0'ed.
Here is the compile command line and the compilation error, both
edited for clarity.
g++ -c -g -Wall -fexceptions -DINCLUDE_BOOST_BIND
-I/path/to/boost-1.35.0/include main.cpp -o main.o
main.cpp: In function 'int main()':
main.cpp:37: error: '_1' was not declared in this scope
I have seen these related articles from the archives of this list but
none of the suggestions eliminated the error. I added the inclusion
of boost/lambda/construct.hpp per one of the suggestions there. Its
inclusion or exclusion doesn't change the behavior.
http://thread.gmane.org/gmane.comp.lib.boost.user/35128
http://thread.gmane.org/gmane.comp.lib.boost.user/16630
http://thread.gmane.org/gmane.comp.lib.boost.user/16887
As you may imagine, the elided (and commented out) lines contain
actual uses of boost/bind.hpp but it is a mystery to me that simple
inclusion of a header file would cause otherwise working code to stop
compiling.
This compile command (same as above but with -D removed):
g++ -c -g -Wall -fexceptions -I/path/to/boost-1.35.0/include main.cpp -o main.o
runs to completion and the subsequent link is successful.
Any ideas?
Thanks in advance,
Ken
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net