Opened 5 years ago
Closed 5 years ago
#13307 closed Bugs (fixed)
multi_index_container can't work with _com_ptr_t
| Reported by: | Owned by: | Joaquín M López Muñoz | |
|---|---|---|---|
| Milestone: | To Be Determined | Component: | multi_index |
| Version: | Boost 1.60.0 | Severity: | Problem |
| Keywords: | c++ Visual Studio _com_ptr_t | Cc: |
Description
I try to use multi_index_container with _com_ptr_t objects. I can compile code with no errors, but program crashes in runtime.
Standard containers (std::map, std::set, std::vector) work perfectly with _com_ptr_t.
The sample code:
#include "stdafx.h"
#include <boost\multi_index_container.hpp>
#include <boost\multi_index\random_access_index.hpp>
#include <boost\multi_index\global_fun.hpp>
#include <boost\multi_index\ordered_index.hpp>
#import "C:\Windows\SysWOW64\msxml6.dll" exclude("ISequentialStream", "_FILETIME")
using CTest =
boost::multi_index_container<MSXML2::IXMLDOMDocument2Ptr,
boost::multi_index::indexed_by<boost::multi_index::random_access<>>>;
int main()
{
::CoInitialize(nullptr);
CTest tst;
MSXML2::IXMLDOMDocumentPtr doc;
doc.CreateInstance(CLSID_DOMDocument);
**tst.push_back(std::move(doc));** <-- crash here
::CoUninitialize();
return 0;
}
Change History (7)
comment:1 by , 5 years ago
| Component: | None → multi_index |
|---|---|
| Owner: | set to |
comment:2 by , 5 years ago
| Keywords: | c++ Visual Studio _com_ptr_t added |
|---|
comment:3 by , 5 years ago
comment:4 by , 5 years ago
Hi Joaquin
I'll try it as soon as possible and report about results. Thank you very much for amazingly quick fix.
comment:5 by , 5 years ago
Hi Joaquin.
Anonym - it was me. Very strange UI here.
I've tried your fix on my sample code - it seems to be working. At Monday I'll try it on real big code.
comment:6 by , 5 years ago
Hi Joaquin.
I've tried fix in real code - it's working. Thank you very much.
comment:7 by , 5 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |

Hi Andrey
I think the issue is solved by these two commits:
Would you mind patching your local installation of Boost with these and checking whether things work now? The only part where things will still go wrong with overloaded
operator&is serialization, but seems the author is working on this in parallel.Thank you,