On Thu, Apr 1, 2010 at 5:17 AM, Jeremiah Willcock
<jewillco@osl.iu.edu> wrote:
On Wed, 31 Mar 2010, Sandeep Gupta wrote:
Hi,
I created a simple property_map as follows:
struct VecMap
{
typedef int value_type;
typedef int key_type;
typedef read_write_property_map_tag category;
typedef int* reference;
std::vector<int> vec_store;
};
void put(VecMap& rmap, int key, int val)
{
rmap.vec_store[key] = val;
}
int get(VecMap& rmap, int key)
{
return rmap.vec_store[key];
}
/// End code
The compiler gcc-4.4.1 against latest boost-trunk gives errorerror: no type named value_type in struct
boost::property_traits<VecMap>
The code however compiles fine with boost_1_40. Please take a look.
The full code is available here http://codepad.org/KtmbXkLa
I tried the code you posted (at codepad) with GCC 3.4, 4.1, and 4.4.0 and did not receive an error. Note that in the trunk, the
property_map header file is <boost/property_map/property_map.hpp>.
-
The posted code works with earlier version of boost. However when I change the header to boost/property_map/property_map.hpp and use
boost-trunk that it start giving errors.
I compiled against gcc 4.4.1, 4.4 and 4.2. It gives the same error for all the three.
I changed the code to use the new header file and compiled against the trunk and still don't get any errors. What errors are you seeing (i.e., the full gcc output)?
It seems that the error occurs when I don't define "typedef int& reference" for the property map class. The confusing part is that when I compile with boost_1_42 I get the error
boost_1_42_0/boost/property_map/property_map.hpp:33: error: no type named 'reference' in 'struct VecMap'
Which is expected. However, If I compile against the trunk I get undefined value_type error instead of undefined reference error.
boost-trunk/boost/pending/disjoint_sets.hpp:65: error: no type named 'value_type' in 'struct boost::property_traits<VecMap>'
Something surely is amiss here. Most likely in the disjoint_sets.hpp, I believe.
Thanks
-Sandeep