
26 Feb
2008
26 Feb
'08
8:50 p.m.
Yingwei Zhang:
HI, in my spirit grammar file, I use boost::bind to bind a template function: boos::bind(&std::vector<uint32_t>::push_back)(my_vector, i);
This compiles fine. However, since this is the only usage of std::vector<uint32_t>::push_back, this function is not instantiated and linker complains that this function is not defined.
This is an unfortunate compiler bug. You can force the instantiation of the function by using typedef std::vector<uint32_t> V; void (V::*pm)( uint32_t const& ) = &V::push_back; boost::bind( pm, ... ); but it's somewhat clumsy. I know of no other fix apart from upgrading your compiler.