Opened 11 years ago
Closed 8 years ago
#6720 closed Bugs (fixed)
intrusive::unordered_set::clear_and_dispose does not compile on VC11 Beta when passed a stateless lambda
| Reported by: | Owned by: | Ion Gaztañaga | |
|---|---|---|---|
| Milestone: | To Be Determined | Component: | intrusive |
| Version: | Boost Development Trunk | Severity: | Problem |
| Keywords: | Cc: |
Description
Attached is a small example code, which, being compiled on VC11 Beta produces a compilation error. The same code compiles successfully on VC2010.
The following error is generated:
...\boost\intrusive\slist.hpp(366): error C2247: 'boost::intrusive::hashtable_impl<Config>::node_cast_adaptor<F>::operator ()' not accessible because 'boost::intrusive::detail::node_disposer<F,Container>' uses 'private' to inherit from 'boost::intrusive::detail::ebo_functor_holder<T>'
with
[
Config=boost::intrusive::detail::usetopt<boost::intrusive::detail::base_hook_traits<Item,boost::intrusive::slist_node_traits<void *>,safe_link,boost::intrusive::default_tag,4>,Item::hash,std::equal_to<Item>,unsigned int,boost::intrusive::detail::bucket_traits_impl<boost::intrusive::detail::get_slist_impl<boost::intrusive::slist_node_traits<void *>>::type>,1>,
F=boost::intrusive::detail::node_disposer<main::<lambda_4ec9a6cb8e4a7175a276948992bf9089>,boost::intrusive::hashtable_impl<boost::intrusive::detail::usetopt<boost::intrusive::detail::base_hook_traits<Item,boost::intrusive::slist_node_traits<void *>,safe_link,boost::intrusive::default_tag,4>,Item::hash,std::equal_to<Item>,unsigned int,boost::intrusive::detail::bucket_traits_impl<boost::intrusive::detail::get_slist_impl<boost::intrusive::slist_node_traits<void *>>::type>,1>>>
]
and
[
F=main::<lambda_4ec9a6cb8e4a7175a276948992bf9089>,
Container=boost::intrusive::hashtable_impl<boost::intrusive::detail::usetopt<boost::intrusive::detail::base_hook_traits<Item,boost::intrusive::slist_node_traits<void *>,safe_link,boost::intrusive::default_tag,4>,Item::hash,std::equal_to<Item>,unsigned int,boost::intrusive::detail::bucket_traits_impl<boost::intrusive::detail::get_slist_impl<boost::intrusive::slist_node_traits<void *>>::type>,1>>
]
and
[
T=main::<lambda_4ec9a6cb8e4a7175a276948992bf9089>
]
Attachments (1)
Change History (3)
by , 11 years ago
comment:1 by , 8 years ago
comment:2 by , 8 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.

I have the same issue on VS12 (2013) when trying to make following:
actions_.clear_and_dispose([](Buffer<ActionRecord>* value) { delete value; });
where actions_ is:
boost::intrusive::set<Buffer<ActionRecord>> actions_;