Boost-users
Threads by month
- ----- 2024 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2000 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1999 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1998 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1997 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
August 2015
- 91 participants
- 75 discussions
Hello,
Here's a crazy question.
I am exploring what to do with a simulation calculator, for
dimensional analysis, dimensional safety, and potentially adopting
Boost.Unit to help with that.
What with the decomposition of Boost into Git Submodules, and since
Boost.Units is header only (yes?), do I really need the whole library,
or I could just adopt a Boost.Unit submodule and include it as
appropriate?
Thanks in advance...
Best regards,
Michael Powell
1
1
I'd like a combiner to return the slot iterator as a range.
1. What is the type of the iterator? (any exposed meta function to get
this? I couldn't see in the docs)
2. Are the itertors valid after the combiner returns?
3. Is this already possible without a custom combiner?
E.g.
template<class T>
struct MyRangeCombiner
{
typedef boost::iterator_range< some_meta<T>::type > result_type;
template<class It>
result_type operator()(It begin, It end) const {
return boost::make_iterator_range(begin,end);
}
};
class ComboSlot
{
public:
void method1(int i) {..}
void method2(double d) {..}
};
boost::signals2::signal< ComboSlot&() , MyRangeCombiner<ComboSlot> > sig;
// in use
for( ComboSlot& cs : sig() ) {
cs.method1(3);
cs.method2(3.14);
}
A broader picture is the following: More often than not I have a family
of events (signals). The slots are connected in groups, such as the the
ComboSlot above. One straightforward implementation is to maintain
different signals for every method:
ComboSlot cs;
boost::signals2::signal< void(int) > sigMethod1;
boost::signals2::signal< void(double) > sigMethod2;
sigMethod1.connect( &ComboSlot::method1, _1 );
sigMethod2.connect( &ComboSlot::method2, _1 );
...
There is quite a bit of waste associated with above. Not only it requires
more code, but also we know for sure that if method1 is connected, so will
method2, and they will be connected to slots who calls the corresponding
method on the same ComboSlot.
One other alternative is to write a combiner which loops and calls the
method within operator(). Returning a range would be a better alternative.
Thanks
Nick
2
5
Hi folks,
I have some code making use of both Boost MPL (and Variant) with
occasional use of lexical_cast in some translation units. This is
working fine on Linux/Unix/MacOS X with a wide range of GCC and clang
versions. However, when porting to Windows with MS Visual Studio 2013
and Boost 1.58, I've encountered an unexpected and subtle interaction
with the MPL and Boost headers. If I include them in the "wrong" order
it leads to bizarre compile errors.
After many hours of testing, I've reduced the failure down to the
minimal testcase below. In the code sample below, there are two
#includes for boost/lexical_cast.hpp. If the first is uncommented,
compiling fails. If this is commented and the second is uncommented,
compiling succeeds! The odd thing: the critical place is before and
after defining BOOST_MPL_LIMIT_VECTOR_SIZE. In the failure case the
limit size is 20, when succeeding it's 40. The code below requires more
than 20 to successfully compile.
While it's fairly obvious with hindsight that lexical_cast is indirectly
including boost/mpl/limits/vector.hpp which is defaulting the limit to
20, the fact that the behaviour is differing between compilers is a bit
unexpected, particularly since I don't want to mess with the limit if
already set in case the users of my library need a higher limit, but
they might have used lexical_cast themselves.
Has anyone else run into this type of problem before? It's also made me
realise that using variant with MPL lists might be problematic if the
end user changes the limit and this changes the underlying type? Should
I just use vector40.hpp and ignore the limit? If I did this, do I need
to worry about the intermediate types in the code below, or do I just
need to use vector40 in place of vector<> (or in place of
vector0<>)--I'm unsure how insert_range knows which type to use or is it
vector0 in this case and I should be "allocating" space by using a
different type? [I am using vector<> in reality but tried vector0 here
to see if it made a difference]
Thanks all,
Roger
----source--------------------------------------------------------------
#include <string>
#include <vector>
#include <cstdint>
# ifndef BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
/// Disable MPL header preprocessing (to allow the following macros to
be modified).
# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
# endif
#include <boost/lexical_cast.hpp>
# ifndef BOOST_MPL_LIMIT_VECTOR_SIZE
/// MPL vector size limit increase.
# define BOOST_MPL_LIMIT_VECTOR_SIZE 40
# endif
//#include <boost/lexical_cast.hpp>
# ifndef BOOST_MPL_LIMIT_LIST_SIZE
/// MPL list size limit increase.
# define BOOST_MPL_LIMIT_LIST_SIZE 40
# endif
#include <boost/mpl/insert_range.hpp>
#include <boost/mpl/joint_view.hpp>
#include <boost/mpl/transform_view.hpp>
#include <boost/mpl/vector.hpp>
#include <boost/mpl/vector/vector0.hpp>
#include <boost/version.hpp>
#if BOOST_VERSION >= 105800
# include <boost/type_traits/remove_cv.hpp>
#endif
typedef boost::mpl::vector<std::string,
bool> non_numeric_types;
typedef boost::mpl::vector<uint8_t,
uint16_t,
uint32_t,
uint64_t,
int8_t,
int16_t,
int32_t,
int64_t> integer_types;
typedef boost::mpl::vector<float,
double,
long double> float_types;
typedef boost::mpl::joint_view<integer_types,
float_types>::type numeric_types_view;
typedef boost::mpl::joint_view<non_numeric_types,
numeric_types_view>::type basic_types_view;
template<typename T>
struct make_vector
{
typedef std::vector<T> type;
};
typedef boost::mpl::transform_view<basic_types_view,
make_vector<boost::mpl::_1> >::type list_types_view;
typedef boost::mpl::joint_view<basic_types_view, list_types_view>
all_types_view;
typedef boost::mpl::insert_range<boost::mpl::vector0<>,
boost::mpl::end<boost::mpl::vector0<> >::type, all_types_view>::type
discriminated_types;
------------------------------------------------------------------------
----error log-----------------------------------------------------------
1> Environment Variables passed to tool:
1> VS_UNICODE_OUTPUT=1500
1> C:\Program Files (x86)\Microsoft Visual Studio
12.0\VC\bin\x86_amd64\CL.exe /c
/I"D:\bioformats\cpp\cmake\..\ext\gtest-1.7.0\include"
/ID:\bioformats\cpp\lib /I"D:\bioformats\v1\bioformats-build\cpp\lib"
/I"D:\bioformats\v1\superbuild-install\include\boost-1_58"
/I"D:\bioformats\v1\superbuild-install\include" /Zi /nologo /W3 /WX- /Od
/Ob0 /D WIN32 /D _WINDOWS /D _DEBUG /D BOOST_ALL_DYN_LINK /D
BOOST_ALL_NO_LIB /D _CRT_SECURE_NO_WARNINGS /D "CMAKE_INTDIR=\"Debug\""
/D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope
/GR /Fo"testinclude.dir\Debug\\" /Fd"testinclude.dir\Debug\vc120.pdb"
/Gd /TP /errorReport:prompt /bigobj
"D:\bioformats\cpp\test\ome-bioformats\testinclude.cpp"
1> Tracking command:
1> C:\Program Files (x86)\MSBuild\12.0\bin\Tracker.exe /d "C:\Program
Files (x86)\MSBuild\12.0\bin\FileTracker.dll" /i
D:\bioformats\v1\bioformats-build\cpp\test\ome-bioformats\testinclude.dir\Debug\testinclude.tlog
/r D:\BIOFORMATS\CPP\TEST\OME-BIOFORMATS\TESTINCLUDE.CPP /b
MSBuildConsole_CancelEventa3d26d0a2f3141fdad0e9cdd682fa900 /c
"C:\Program Files (x86)\Microsoft Visual Studio
12.0\VC\bin\x86_amd64\CL.exe" /c
/I"D:\bioformats\cpp\cmake\..\ext\gtest-1.7.0\include"
/ID:\bioformats\cpp\lib /I"D:\bioformats\v1\bioformats-build\cpp\lib"
/I"D:\bioformats\v1\superbuild-install\include\boost-1_58"
/I"D:\bioformats\v1\superbuild-install\include" /Zi /nologo /W3 /WX- /Od
/Ob0 /D WIN32 /D _WINDOWS /D _DEBUG /D BOOST_ALL_DYN_LINK /D
BOOST_ALL_NO_LIB /D _CRT_SECURE_NO_WARNINGS /D "CMAKE_INTDIR=\"Debug\""
/D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope
/GR /Fo"testinclude.dir\Debug\\" /Fd"testinclude.dir\Debug\vc120.pdb"
/Gd /TP /errorReport:prompt /bigobj
"D:\bioformats\cpp\test\ome-bioformats\testinclude.cpp"
1> testinclude.cpp
1>D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/push_front_impl.hpp(45):
error C2664: 'int
boost::mpl::assertion_failed<false>(boost::mpl::assert<false>::type)' :
cannot convert argument 1 from 'boost::mpl::failed ************(__cdecl
boost::mpl::push_front_impl<boost::mpl::aux::vector_tag<20>>::apply<Sequence,T>::REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST::*
***********)(Sequence)' to 'boost::mpl::assert<false>::type'
1> with
1> [
1> Sequence=boost::mpl::vector20<signed
char,short,int,__int64,float,double,long
double,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>>,std::vector<bool,std::allocator<bool>>,std::vector<unsigned
char,std::allocator<unsigned char>>,std::vector<unsigned
short,std::allocator<char16_t>>,std::vector<unsigned
int,std::allocator<char32_t>>,std::vector<unsigned
__int64,std::allocator<unsigned __int64>>,std::vector<signed
char,std::allocator<signed
char>>,std::vector<short,std::allocator<short>>,std::vector<int,std::allocator<int>>,std::vector<__int64,std::allocator<__int64>>,std::vector<float,std::allocator<float>>,std::vector<double,std::allocator<double>>,std::vector<long
double,std::allocator<long double>>>
1> , T=unsigned __int64
1> ]
1> No constructor could take the source type, or constructor
overload resolution was ambiguous
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/push_front.hpp(32)
: see reference to class template instantiation
'boost::mpl::push_front_impl<boost::mpl::aux::vector_tag<20>>::apply<Sequence,T>'
being compiled
1> with
1> [
1> Sequence=boost::mpl::vector20<signed
char,short,int,__int64,float,double,long
double,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>>,std::vector<bool,std::allocator<bool>>,std::vector<unsigned
char,std::allocator<unsigned char>>,std::vector<unsigned
short,std::allocator<char16_t>>,std::vector<unsigned
int,std::allocator<char32_t>>,std::vector<unsigned
__int64,std::allocator<unsigned __int64>>,std::vector<signed
char,std::allocator<signed
char>>,std::vector<short,std::allocator<short>>,std::vector<int,std::allocator<int>>,std::vector<__int64,std::allocator<__int64>>,std::vector<float,std::allocator<float>>,std::vector<double,std::allocator<double>>,std::vector<long
double,std::allocator<long double>>>
1> , T=unsigned __int64
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/push_front.hpp(47)
: see reference to class template instantiation
'boost::mpl::push_front<T1,T2>' being compiled
1> with
1> [
1> T1=boost::mpl::vector20<signed
char,short,int,__int64,float,double,long
double,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>>,std::vector<bool,std::allocator<bool>>,std::vector<unsigned
char,std::allocator<unsigned char>>,std::vector<unsigned
short,std::allocator<char16_t>>,std::vector<unsigned
int,std::allocator<char32_t>>,std::vector<unsigned
__int64,std::allocator<unsigned __int64>>,std::vector<signed
char,std::allocator<signed
char>>,std::vector<short,std::allocator<short>>,std::vector<int,std::allocator<int>>,std::vector<__int64,std::allocator<__int64>>,std::vector<float,std::allocator<float>>,std::vector<double,std::allocator<double>>,std::vector<long
double,std::allocator<long double>>>
1> , T2=unsigned __int64
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/apply_wrap.hpp(145)
: see reference to class template instantiation
'boost::mpl::push_front<boost::mpl::na,boost::mpl::na>::apply<T1,T2,boost::mpl::na,boost::mpl::na,boost::mpl::na>'
being compiled
1> with
1> [
1> T1=boost::mpl::vector20<signed
char,short,int,__int64,float,double,long
double,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>>,std::vector<bool,std::allocator<bool>>,std::vector<unsigned
char,std::allocator<unsigned char>>,std::vector<unsigned
short,std::allocator<char16_t>>,std::vector<unsigned
int,std::allocator<char32_t>>,std::vector<unsigned
__int64,std::allocator<unsigned __int64>>,std::vector<signed
char,std::allocator<signed
char>>,std::vector<short,std::allocator<short>>,std::vector<int,std::allocator<int>>,std::vector<__int64,std::allocator<__int64>>,std::vector<float,std::allocator<float>>,std::vector<double,std::allocator<double>>,std::vector<long
double,std::allocator<long double>>>
1> , T2=unsigned __int64
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/apply.hpp(154)
: see reference to class template instantiation
'boost::mpl::apply_wrap2<boost::mpl::lambda<F,boost::mpl::void_>::type,T1,T2>'
being compiled
1> with
1> [
1> F=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> , T1=boost::mpl::vector20<signed
char,short,int,__int64,float,double,long
double,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>>,std::vector<bool,std::allocator<bool>>,std::vector<unsigned
char,std::allocator<unsigned char>>,std::vector<unsigned
short,std::allocator<char16_t>>,std::vector<unsigned
int,std::allocator<char32_t>>,std::vector<unsigned
__int64,std::allocator<unsigned __int64>>,std::vector<signed
char,std::allocator<signed
char>>,std::vector<short,std::allocator<short>>,std::vector<int,std::allocator<int>>,std::vector<__int64,std::allocator<__int64>>,std::vector<float,std::allocator<float>>,std::vector<double,std::allocator<double>>,std::vector<long
double,std::allocator<long double>>>
1> , T2=unsigned __int64
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(151)
: see reference to class template instantiation
'boost::mpl::apply2<BackwardOp,boost::mpl::vector20<T,short,int,__int64,float,double,long
double,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::allocator<_Ty>>,std::vector<bool,std::allocator<bool>>,std::vector<unsigned
char,std::allocator<unsigned char>>,std::vector<unsigned
short,std::allocator<char16_t>>,std::vector<unsigned
int,std::allocator<char32_t>>,std::vector<unsigned
__int64,std::allocator<unsigned
__int64>>,std::vector<T,std::allocator<signed
char>>,std::vector<short,std::allocator<short>>,std::vector<int,std::allocator<int>>,std::vector<__int64,std::allocator<__int64>>,std::vector<float,std::allocator<float>>,std::vector<double,std::allocator<double>>,std::vector<long
double,std::allocator<long double>>>,unsigned __int64>' being compiled
1> with
1> [
1> BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> , T=signed char
1> ,
_Ty=std::basic_string<char,std::char_traits<char>,std::allocator<char>>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(149)
: see reference to class template instantiation
'boost::mpl::aux::reverse_fold_impl<-1,boost::mpl::joint_iter<L1,L1,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,3>,boost::mpl::v_iter<Vector,8>,I2>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,0>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,0>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,0>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,
2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mp
l
::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>,Last,boost::mpl::vector0<boost::mpl::na>,BackwardOp,ForwardOp>'
being compiled
1> with
1> [
1> L1=boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>
1> , T0=std::string
1> , T1=bool
1> ,
Vector=boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>
1> , I2=boost::mpl::v_iter<boost::mpl::vector3<float,double,long double>,0>
1> , T2=long double
1> , F=make_vector
1> , Tag=boost::mpl::void_
1> ,
Last=boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<make_vector,boost::mpl::void_>,boost::mpl::arg<1>>,0>>>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<make_vector,boost::mpl::void_>,boost::mpl::arg<1>>,0>>>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>
1> , BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> , ForwardOp=boost::mpl::arg<1>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(149)
: see reference to class template instantiation
'boost::mpl::aux::reverse_fold_impl<-1,boost::mpl::joint_iter<L1,L1,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,2>,boost::mpl::v_iter<Vector,8>,I2>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,0>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,0>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,0>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,
2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mp
l
::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>,Last,boost::mpl::vector0<boost::mpl::na>,BackwardOp,ForwardOp>'
being compiled
1> with
1> [
1> L1=boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>
1> , T0=std::string
1> , T1=bool
1> ,
Vector=boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>
1> , I2=boost::mpl::v_iter<boost::mpl::vector3<float,double,long double>,0>
1> , T2=long double
1> , F=make_vector
1> , Tag=boost::mpl::void_
1> ,
Last=boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<make_vector,boost::mpl::void_>,boost::mpl::arg<1>>,0>>>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<make_vector,boost::mpl::void_>,boost::mpl::arg<1>>,0>>>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>
1> , BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> , ForwardOp=boost::mpl::arg<1>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(149)
: see reference to class template instantiation
'boost::mpl::aux::reverse_fold_impl<-1,boost::mpl::joint_iter<L1,L1,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,1>,boost::mpl::v_iter<Vector,8>,I2>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,0>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,0>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,0>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,
2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mp
l
::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<Vector,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,T2>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>,Last,boost::mpl::vector0<boost::mpl::na>,BackwardOp,ForwardOp>'
being compiled
1> with
1> [
1> L1=boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>
1> , T0=std::string
1> , T1=bool
1> ,
Vector=boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>
1> , I2=boost::mpl::v_iter<boost::mpl::vector3<float,double,long double>,0>
1> , T2=long double
1> , F=make_vector
1> , Tag=boost::mpl::void_
1> ,
Last=boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<make_vector,boost::mpl::void_>,boost::mpl::arg<1>>,0>>>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<make_vector,boost::mpl::void_>,boost::mpl::arg<1>>,0>>>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>
1> , BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> , ForwardOp=boost::mpl::arg<1>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(149)
: see reference to class template instantiation
'boost::mpl::aux::reverse_fold_impl<-1,boost::mpl::joint_iter<L1,L1,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,I2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,0>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,0>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,0>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>,Last,boost::mpl::vector0<boost::mpl::na>,BackwardOp,ForwardOp>'
being compiled
1> with
1> [
1> L1=boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>
1> , T0=std::string
1> , T1=bool
1> ,
I2=boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,0>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,0>>
1> , T2=uint32_t
1> , T3=uint64_t
1> , T4=int8_t
1> , T5=int16_t
1> , T6=int32_t
1> , T7=int64_t
1> , F=make_vector
1> , Tag=boost::mpl::void_
1> ,
Last=boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<make_vector,boost::mpl::void_>,boost::mpl::arg<1>>,0>>>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<make_vector,boost::mpl::void_>,boost::mpl::arg<1>>,0>>>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>
1> , BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> , ForwardOp=boost::mpl::arg<1>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(149)
: see reference to class template instantiation
'boost::mpl::aux::reverse_fold_impl<-1,boost::mpl::joint_iter<L1,L1,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<Vector,1>,boost::mpl::v_iter<Vector,2>,I2>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,2>,boost::mpl::v_iter<Vector,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<Vector,0>,boost::mpl::v_iter<Vector,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,0>,boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,0>>>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,2>,boost::mpl::v_iter<Vector,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<Vector,2>,boost::mpl::v_iter<Vector,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,2>,boost::mpl::v_iter<Vector,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<Vector,2>,boost::mpl::v_iter<Vector,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<Vector,2>,boost::mpl::v_iter<Vector,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<T0,T1,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>,Last,boost::mpl::vector0<boost::mpl::na>,BackwardOp,ForwardOp>'
being compiled
1> with
1> [
1> L1=boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>
1> , Vector=boost::mpl::vector2<std::string,bool>
1> ,
I2=boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,0>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,0>>
1> , T0=uint8_t
1> , T1=uint16_t
1> , T2=uint32_t
1> , T3=uint64_t
1> , T4=int8_t
1> , T5=int16_t
1> , T6=int32_t
1> , T7=int64_t
1> , F=make_vector
1> , Tag=boost::mpl::void_
1> ,
Last=boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<make_vector,boost::mpl::void_>,boost::mpl::arg<1>>,0>>>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::v_iter<boost::mpl::vector2<std::string,bool>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector8<uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<make_vector,boost::mpl::void_>,boost::mpl::arg<1>>,0>>>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>
1> , BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> , ForwardOp=boost::mpl::arg<1>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/reverse_fold.hpp(41)
: see reference to class template instantiation
'boost::mpl::aux::reverse_fold_impl<-1,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,0>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,0>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,0>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,0>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,0>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,0>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::joint_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::aux::transform_iter<boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::v_iter<boost::mpl::vector2<T0,T1>,2>,boost::mpl::joint_iter<boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector8<unsigned
char,unsigned
short,T2,T3,T4,T5,T6,T7>,8>,boost::mpl::v_iter<boost::mpl::vector3<float,double,long
double>,3>>>,boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<F,Tag>,boost::mpl::arg<1>>,0>>>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>,State,BackwardOp,ForwardOp>'
being compiled
1> with
1> [
1> T0=std::string
1> , T1=bool
1> , T2=uint32_t
1> , T3=uint64_t
1> , T4=int8_t
1> , T5=int16_t
1> , T6=int32_t
1> , T7=int64_t
1> , F=make_vector
1> , Tag=boost::mpl::void_
1> , State=boost::mpl::vector0<boost::mpl::na>
1> , BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> , ForwardOp=boost::mpl::arg<1>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/copy.hpp(49)
: see reference to class template instantiation
'boost::mpl::reverse_fold<Sequence,boost::mpl::vector0<boost::mpl::na>,boost::mpl::push_front<boost::mpl::na,boost::mpl::na>,boost::mpl::arg<1>>'
being compiled
1> with
1> [
1>
Sequence=boost::mpl::joint_view<boost::mpl::iterator_range<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>,boost::mpl::joint_view<all_types_view,boost::mpl::iterator_range<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/copy.hpp(54)
: see reference to class template instantiation
'boost::mpl::aux::reverse_copy_impl<P1,P2>' being compiled
1> with
1> [
1>
P1=boost::mpl::joint_view<boost::mpl::iterator_range<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>,boost::mpl::joint_view<all_types_view,boost::mpl::iterator_range<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>>>>
1> ,
P2=boost::mpl::front_inserter<boost::mpl::clear_impl<boost::mpl::aux::vector_tag<0>>::apply<boost::mpl::vector0<boost::mpl::na>>::type>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/insert_range_impl.hpp(56)
: see reference to class template instantiation
'boost::mpl::reverse_copy<boost::mpl::joint_view<boost::mpl::iterator_range<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,Pos>,boost::mpl::joint_view<Range,boost::mpl::iterator_range<boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,Pos>>>,boost::mpl::front_inserter<boost::mpl::clear_impl<boost::mpl::aux::vector_tag<0>>::apply<Sequence>::type>>'
being compiled
1> with
1> [
1> Pos=boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>
1> , Range=all_types_view
1> , Sequence=boost::mpl::vector0<boost::mpl::na>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/insert_range.hpp(33)
: see reference to class template instantiation
'boost::mpl::insert_range_impl<boost::mpl::aux::vector_tag<0>>::apply<Sequence,Pos,Range>'
being compiled
1> with
1> [
1> Sequence=boost::mpl::vector0<boost::mpl::na>
1> , Pos=boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>
1> , Range=all_types_view
1> ]
1> D:\bioformats\cpp\test\ome-bioformats\testinclude.cpp(63) :
see reference to class template instantiation
'boost::mpl::insert_range<boost::mpl::vector0<boost::mpl::na>,boost::mpl::v_iter<boost::mpl::vector0<boost::mpl::na>,0>,all_types_view>'
being compiled
1>D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(151):
error C2039: 'type' : is not a member of
'boost::mpl::apply2<BackwardOp,boost::mpl::vector20<T,short,int,__int64,float,double,long
double,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::allocator<_Ty>>,std::vector<bool,std::allocator<bool>>,std::vector<unsigned
char,std::allocator<unsigned char>>,std::vector<unsigned
short,std::allocator<char16_t>>,std::vector<unsigned
int,std::allocator<char32_t>>,std::vector<unsigned
__int64,std::allocator<unsigned
__int64>>,std::vector<T,std::allocator<signed
char>>,std::vector<short,std::allocator<short>>,std::vector<int,std::allocator<int>>,std::vector<__int64,std::allocator<__int64>>,std::vector<float,std::allocator<float>>,std::vector<double,std::allocator<double>>,std::vector<long
double,std::allocator<long double>>>,unsigned __int64>'
1> with
1> [
1> BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> , T=signed char
1> ,
_Ty=std::basic_string<char,std::char_traits<char>,std::allocator<char>>
1> ]
1>D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(151):
error C3203: 'type' : unspecialized class template can't be used as a
template argument for template parameter 'T1', expected a real type
1>D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/push_front.hpp(31):
error C2903: 'apply' : symbol is neither a class template nor a function
template
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/push_front.hpp(47)
: see reference to class template instantiation
'boost::mpl::push_front<T1,T2>' being compiled
1> with
1> [
1> T1=int
1> , T2=unsigned int
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/apply_wrap.hpp(145)
: see reference to class template instantiation
'boost::mpl::push_front<boost::mpl::na,boost::mpl::na>::apply<T1,T2,boost::mpl::na,boost::mpl::na,boost::mpl::na>'
being compiled
1> with
1> [
1> T1=int
1> , T2=unsigned int
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/apply.hpp(154)
: see reference to class template instantiation
'boost::mpl::apply_wrap2<boost::mpl::lambda<F,boost::mpl::void_>::type,T1,T2>'
being compiled
1> with
1> [
1> F=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> , T1=int
1> , T2=unsigned int
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(151)
: see reference to class template instantiation
'boost::mpl::apply2<BackwardOp,int,unsigned int>' being compiled
1> with
1> [
1> BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> ]
1>D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/push_front.hpp(31):
error C2039: 'apply' : is not a member of
'boost::mpl::push_front_impl<boost::mpl::non_sequence_tag>'
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/push_front_impl.hpp(66)
: see declaration of
'boost::mpl::push_front_impl<boost::mpl::non_sequence_tag>'
1>D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/push_front.hpp(31):
error C2955: 'boost::mpl::apply' : use of class template requires
template argument list
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/apply.hpp(188)
: see declaration of 'boost::mpl::apply'
1>D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/push_front.hpp(31):
error C2143: syntax error : missing ',' before '<'
1>D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(151):
error C2039: 'type' : is not a member of
'boost::mpl::apply2<BackwardOp,int,unsigned int>'
1> with
1> [
1> BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/push_front_impl.hpp(66)
: see declaration of
'boost::mpl::push_front_impl<boost::mpl::non_sequence_tag>'
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/apply.hpp(188)
: see declaration of 'boost::mpl::apply'
1>D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(151):
error C2039: 'type' : is not a member of
'boost::mpl::apply2<BackwardOp,int,unsigned short>'
1> with
1> [
1> BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/push_front_impl.hpp(66)
: see declaration of
'boost::mpl::push_front_impl<boost::mpl::non_sequence_tag>'
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/apply.hpp(188)
: see declaration of 'boost::mpl::apply'
1>D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(151):
error C2039: 'type' : is not a member of
'boost::mpl::apply2<BackwardOp,int,unsigned char>'
1> with
1> [
1> BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/push_front_impl.hpp(66)
: see declaration of
'boost::mpl::push_front_impl<boost::mpl::non_sequence_tag>'
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/apply.hpp(188)
: see declaration of 'boost::mpl::apply'
1>D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(151):
error C2039: 'type' : is not a member of
'boost::mpl::apply2<BackwardOp,int,bool>'
1> with
1> [
1> BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> ]
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/push_front_impl.hpp(66)
: see declaration of
'boost::mpl::push_front_impl<boost::mpl::non_sequence_tag>'
1>
D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/apply.hpp(188)
: see declaration of 'boost::mpl::apply'
1>D:\bioformats\v1\superbuild-install\include\boost-1_58\boost/mpl/aux_/reverse_fold_impl_body.hpp(151):
error C2039: 'type' : is not a member of
'boost::mpl::apply2<BackwardOp,int,std::basic_string<char,std::char_traits<char>,std::allocator<char>>>'
1> with
1> [
1> BackwardOp=boost::mpl::push_front<boost::mpl::na,boost::mpl::na>
1> ]
1> The command exited with code 2.
------------------------------------------------------------------------
2
3
[Interprocess] or [Container]: Error with internally in rbtree_best_fit deallocation
by David Schneider 05 Aug '15
by David Schneider 05 Aug '15
05 Aug '15
Hello,
I've been upgrading a Windows 3.0 industrial control suite that relies
heavily on GlobalAlloc() etc. I've used Boost's IPC functions to create
a replacement that works very, very well for multiple applications so far.
I'm using Boost 1.57 or 1.58, both exhibit the same behavior, across
Windows 7, 8.1 & 10 64-bit, with 32-bit applications, compiled in Visual
Studio 2013. All code displayed is from 1.58 but I don't see it being
materially different from 1.57 in this case.
Unfortunately, I've come up against an issue I can't best. 6 or 7 of the
applications are working more or less without hitches, but I've come to
port the last one and rbtree_best_fit is messing up pretty badly. It
happens during a destruct operation on a vector. It always, always
happens on the same vector, and I can even watch all operations on it by
pre-allocating it large because rbtree_best_fit will reliably assign the
same address (in every application, a 64mb memory pool is mapped into
the same address space)
What happens is the vector gets constructed with a UUID generated by
Boost as its identifier. (A handle including a pointer to said vector
goes into an interprocess map, but that's another story).
Here's the typedefs used to create the memory pool & vector:
namespace ipc = boost::interprocess;
typedef ipc::managed_windows_shared_memory managed_pool_t;
typedef managed_pool_t::segment_manager managed_pool_segment_manager_t;
typedef ipc::allocator < char, managed_pool_segment_manager_t >
managed_pool_allocator_t;
typedef ipc::vector< char, managed_pool_allocator_t > GLE_handle_vector_t;
How it is constructed:
GLE_handle_vector_t *foo;
foo =
_managed_pool->construct<GLE_handle_vector_t>(uuid_str)(_managed_pool->get_segment_manager());
foo->resize((GLE_handle_vector_t::size_type)dwBytes); // dwBytes has
some added to it in this case to prevent the need to re-allocate the
vector's data buffer
Later on it is resized at least 12 times:
mvector->resize(dwBytes);
Then something goes to free it.
_managed_pool->destroy<GLE_handle_vector_t>(UUID);
Keep in mind that this has worked for 6 other programs all sharing
memory at the same time over at least a hundred hours of running-time so
far.
Yes, I have checked that the UUID is correct. I get, of course, an
extremely long template error. I'll include it at the end. The relevant
part is this:
> w16gle.dll!boost::interprocess::operator<(const
boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl & a, const
boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl & b) Line 126 C++
The offending line is:
{ return a.m_size < b.m_size; }
Going into the immediate window,
&a
0x700a434c {...}
boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::SizeHolder: {m_prev_size=??? m_size=??? m_prev_allocated=??? ...}
boost::intrusive::generic_hook<boost::intrusive::rbtree_algorithms<boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned
int,0>,1> >,boost::intrusive::dft_tag,0,3>: {...}
&b
0x3f09bed8 {...}
boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::SizeHolder: {m_prev_size=0 m_size=513 m_prev_allocated=1 ...}
boost::intrusive::generic_hook<boost::intrusive::rbtree_algorithms<boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned
int,0>,1> >,boost::intrusive::dft_tag,0,3>: {...}
B's address is correct. I have no idea where it is getting A's address,
especially since it is passed by reference. Inspecting the memory all
around that location reveals that it is not allocated. My understanding
is that at this point the code is trying to merge this block with the
next free one, but that's as far as I got understanding it. I've tried
tracing the call stack thoroughly but it goes through some "external
code" on the call stack just before this error.
w16gle.dll!boost::interprocess::operator<(const
boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl & a, const
boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl & b) Line 126 C++
*_[External Code]_*
w16gle.dll!boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl>,boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned
int,0>,1>,0,boost::intrusive::dft_tag,3>
>::operator()<boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0>,boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> >(const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & key1, const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & key2) Line 78 C++
_I would be happy to just use the simple_seq_fit allocator to avoid this
bug_, since it would do fine for this, but when I typedef it...
namespace boost {
namespace interprocess {
typedef basic_managed_windows_shared_memory<char,
simple_seq_fit<mutex_family>, iset_index> managed_windows_shared_seq_memory;
}
}
and use it, I get compilation errors:
c:\boost\include\boost-1_58\boost\interprocess\managed_windows_shared_memory.hpp(45):
error C2027: use of undefined type
'boost::interprocess::simple_seq_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,ptrdiff_t,size_t,0>>'
1>
c:\boost\include\boost-1_58\boost\interprocess\managed_windows_shared_memory.hpp(70)
: see reference to class template instantiation
'boost::interprocess::ipcdetail::wshmem_open_or_create<AllocationAlgorithm>'
being compiled
1> with
.... there's over 100 of them. No way I'm figuring that out.
Please help me. Is there some way to troubleshoot what rbtree_best_fit
is doing wrong? If a Boost developer wants to have a private discussion
with me on the matter please feel free to contact me, since there's
obviously a bug somewhere, I might be open to that. Alternatively, how
do I get the seq_best_fit to work?
Thank you for your help!
Here is the whole call stack during the access violation with
rbtree_best_fit that I referred to above.
> w16gle.dll!boost::interprocess::operator<(const
boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl & a, const
boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl & b) Line 126 C++
[External Code]
w16gle.dll!boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl>,boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned
int,0>,1>,0,boost::intrusive::dft_tag,3>
>::operator()<boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0>,boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> >(const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & key1, const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & key2) Line 78 C++
w16gle.dll!boost::intrusive::bstree_algorithms<boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned
int,0>,1>
>::insert_equal_lower_bound_check<boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl>,boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned int,0>,1>,0,boost::intrusive::dft_tag,3> > >(const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & h, const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & new_node, boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl>,boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned int,0>,1>,0,boost::intrusive::dft_tag,3> > comp, boost::intrusive::insert_commit_data_t<boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> > & commit_data, unsigned int * pdepth) Line 1692 C++
w16gle.dll!boost::intrusive::bstree_algorithms<boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned
int,0>,1>
>::insert_equal_check<boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl>,boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned int,0>,1>,0,boost::intrusive::dft_tag,3> > >(const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & header, const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & hint, const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & new_node, boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl>,boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned int,0>,1>,0,boost::intrusive::dft_tag,3> > comp, boost::intrusive::insert_commit_data_t<boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> > & commit_data, unsigned int * pdepth) Line 1657 C++
w16gle.dll!boost::intrusive::bstree_algorithms<boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned
int,0>,1>
>::insert_equal<boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl>,boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned int,0>,1>,0,boost::intrusive::dft_tag,3> > >(const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & h, const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & hint, const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & new_node, boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl>,boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned int,0>,1>,0,boost::intrusive::dft_tag,3> > comp, unsigned int * pdepth) Line 1121 C++
w16gle.dll!boost::intrusive::rbtree_algorithms<boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned
int,0>,1>
>::insert_equal<boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl>,boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned int,0>,1>,0,boost::intrusive::dft_tag,3> > >(const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & header, const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & hint, const boost::interprocess::offset_ptr<boost::intrusive::compact_rbtree_node<boost::interprocess::offset_ptr<void,int,unsigned int,0> >,int,unsigned int,0> & new_node, boost::intrusive::detail::key_nodeptr_comp<std::less<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl>,boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned int,0>,1>,0,boost::intrusive::dft_tag,3> > comp) Line 374 C++
w16gle.dll!boost::intrusive::bstree_impl<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned
int,0>,1>,0,boost::intrusive::dft_tag,3>,void,unsigned
int,1,5,void>::insert_equal(boost::intrusive::tree_iterator<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned
int,0>,1>,0,boost::intrusive::dft_tag,3>,1> hint,
boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl & value) Line 1039 C++
w16gle.dll!boost::intrusive::multiset_impl<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned
int,0>,1>,0,boost::intrusive::dft_tag,3>,void,unsigned
int,1,void>::insert(boost::intrusive::tree_iterator<boost::intrusive::bhtraits<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl,boost::intrusive::rbtree_node_traits<boost::interprocess::offset_ptr<void,int,unsigned
int,0>,1>,0,boost::intrusive::dft_tag,3>,1> hint,
boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::block_ctrl & value) Line 656 C++
w16gle.dll!boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::priv_deallocate(void * addr) Line 1390 C++
w16gle.dll!boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>::deallocate(void * addr) Line 1321 C++
w16gle.dll!boost::interprocess::segment_manager_base<boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0> >::deallocate(void * addr) Line 227 C++
w16gle.dll!boost::interprocess::allocator<char,boost::interprocess::segment_manager<char,boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>,boost::interprocess::iset_index> >::deallocate(const
boost::interprocess::offset_ptr<char,int,unsigned int,0> & ptr, unsigned
int __formal) Line 159 C++
w16gle.dll!boost::container::container_detail::vector_alloc_holder<boost::interprocess::allocator<char,boost::interprocess::segment_manager<char,boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>,boost::interprocess::iset_index>
>,boost::container::container_detail::integral_constant<unsigned int,2>
>::~vector_alloc_holder<boost::interprocess::allocator<char,boost::interprocess::segment_manager<char,boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>,boost::interprocess::iset_index> >,boost::container::container_detail::integral_constant<unsigned int,2> >() Line 395 C++
w16gle.dll!boost::container::vector<char,boost::interprocess::allocator<char,boost::interprocess::segment_manager<char,boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>,boost::interprocess::iset_index> >
>::~vector<char,boost::interprocess::allocator<char,boost::interprocess::segment_manager<char,boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned int,0>,0>,boost::interprocess::iset_index> > >() Line 985 C++
[External Code]
w16gle.dll!boost::interprocess::ipcdetail::placement_destroy<boost::container::vector<char,boost::interprocess::allocator<char,boost::interprocess::segment_manager<char,boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>,boost::interprocess::iset_index> > > >::destroy_n(void * mem,
unsigned int num, unsigned int & destroyed) Line 61 C++
w16gle.dll!boost::interprocess::segment_manager<char,boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>,boost::interprocess::iset_index>::priv_generic_named_destroy<char>(const
char * name,
boost::interprocess::iset_index<boost::interprocess::ipcdetail::index_config<char,boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0> > > & index,
boost::interprocess::ipcdetail::in_place_interface & table,
boost::interprocess::ipcdetail::bool_<1> is_intrusive_index) Line 975 C++
w16gle.dll!boost::interprocess::segment_manager<char,boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>,boost::interprocess::iset_index>::destroy<boost::container::vector<char,boost::interprocess::allocator<char,boost::interprocess::segment_manager<char,boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>,boost::interprocess::iset_index> > >
>(boost::interprocess::ipcdetail::char_ptr_holder<char> name) Line
538 C++
w16gle.dll!boost::interprocess::ipcdetail::basic_managed_memory_impl<char,boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>,boost::interprocess::iset_index,8>::destroy<boost::container::vector<char,boost::interprocess::allocator<char,boost::interprocess::segment_manager<char,boost::interprocess::rbtree_best_fit<boost::interprocess::mutex_family,boost::interprocess::offset_ptr<void,int,unsigned
int,0>,0>,boost::interprocess::iset_index> > > >(const char * name) Line
568 C++
w16gle.dll!global_mem::GlobalFree(void * hMem, bool
ignore_invalid) Line 904 C++
w16gle.dll!GLEGlobalFree(void * hMem, bool ignore_invalid) Line
175 C++
w_menu32.dll!CreateVUBreakTabList(HWND__ * hWnd, unsigned short
Index, unsigned short BreakTabAant) Line 723 C++
w_comm.exe!TestNieuweTabel() Line 163 C++
w_comm.exe!CommTimer(HWND__ * hWnd) Line 552 C++
w_comm.exe!WndProc(HWND__ * hWnd, unsigned int message, unsigned
int wParam, long lParam) Line 365 C++
[External Code]
[Frames below may be incorrect and/or missing, no symbols loaded
for user32.dll]
w_bars32.dll!CallOldProc(HWND__ * Wnd, unsigned int Msg, unsigned
int wParam, long lParam, long hookkey) Line 126 C++
w_bars32.dll!SubclassParWndProc(HWND__ * Wnd, unsigned short Msg,
unsigned int wParam, long lParam) Line 104 C++
[External Code]
w_comm.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ *
hPrevInstance, char * lpCmdLine, int nCmdShow) Line 191 C++
[External Code]
1
0
05 Aug '15
Here is my problem: for any given algorithm that writes its output into an
output iterator, I'd like to apply a transformation *before* writing to the
output iterator.
e.g. inside the algorithm the output iterator is dereferenced and
incremented to write each result, typically like this:
*output++ = ith_result;
I'd like to wrap the output iterator with a unary function func such that
the effect is equivalent to:
*output++ = func( ith_result );
I'm looking at the adaptors in Boost.Iterator but I cannot find a suitable
one.
Am I missing anything?
Is there a better approach?
Regards
7
8
I find the simplest things the most frustrating to accomplish in
Boost.Log. I know that some compilers have predefined preprocessor
macros to provide information. MSVC for example has __LINE__,
__FILE__, etc.
I need Boost.Log to print line, file, and function information for me
in a platform agnostic way. The documentation is not easy to navigate
through and find the information I need. Also examples on this are
sparse. I've seen some people calling BOOST_LOG_NAMED_SCOPE manually
prior to each log statement. This seems unintuitive.
How can I simply print this contextual information with each log line
in an automated way? Can't Boost.Log piggy-back on compiler features
available to it?
2
1
Hi,
I'm curious about the decision taken to not allow string_ref to modify the
data it represents.
I'm modifying our JSON parser to use it, and sometimes I need to normalise
a field to
uppercase or lowercase. Obviously I cannot now do this without making a
copy of the normalised field somewhere with either std::string or
boost::string_ref.
I notice Jeffrey Yaskin's proposal for a standard implementation (
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3442.html) has
also taken this design decision, which is disappointing.
James
2
1
Dear all,
I'd like to play with Parallel BGL (with MPI), and I'd like to see some
example code. I've followed the Overview and the Adjacency List example,
but I cannot compile my code.
Right now, I'd like to create a graph, and then fill in with some nodes.
Then, access the nodes belonging to a single process, but I wish I had
an error there
My error concerns the definition of the graph: No template named
'bsp_process_group' in namespace 'boost::parallel'; did you mean
'boost::process_group'? The code follows.
What am I doing wrong here? I may have forgotten some header... Is there
any distributed (complete) example code that I might read?
Thanks & Cheers!
#include <iostream>
#include <string>
#include <vector>
#include <boost/mpi.hpp>
#include <boost/graph/use_mpi.hpp>
#include <boost/graph/distributed/mpi_process_group.hpp>
#include <boost/graph/distributed/adjacency_list.hpp>
int main(int argc, const char * argv[])
{
boost::mpi::environment env;
boost::mpi::communicator comm;
typedef boost::adjacency_list<boost::vecS,
boost::distributedS<boost::parallel::bsp_process_group, boost::vecS>,
boost::directedS> graph;
typedef boost::erdos_renyi_iterator<boost::minstd_rand, graph>
generator;
if (comm.rank() == 0)
{
boost::add_edge(1, 2);
boost::add_edge(2, 2);
boost::add_edge(2, 3);
boost::add_edge(3, 4);
boost::add_edge(4, 5);
boost::add_edge(5, 1);
// access ***only rank 0 nodes***
}
return 0;
}
2
2
Hello all,
I hope you can help me, I'm trying to group 3D point data in clusters according to the distance between points. I.e. different groups (or components) are separated by a minimum threshold distance.
To do this I am creating a boost graph (using the Boost Graph library), adding vertices (with 3D point information) and adding edges between nodes of the graph that are within my threshold distance.
However, when I find the connected components on the resulting graph I'm getting an incorrect answer. The vertices of the graph are not grouped correctly. I am comparing my results with a Matlab script (and their proprietary programs) which correctly separates the points.
I have a stackoverflow post with more detail (and no answers) http://stackoverflow.com/questions/27001402/connected-components-boost-c.
If you are able to help in any way I'd be very appreciative. I really don't want to use compiled Matlab for this solution.
Thanks
Simon Choppin
3
9
3
5