martinmoene / variant-lite

variant lite - A C++17-like variant, a type-safe union for C++98, C++11 and later in a single-file header-only library
Boost Software License 1.0
239 stars 25 forks source link

Compile failed on msvc v90 #43

Open Elite-stay opened 2 years ago

Elite-stay commented 2 years ago

No std::add_pointer, std::is_same and std::enable_if but have std::tr1::add_pointer and std::tr1::is_same. I modify macro and compile successfully:

#define variant_HAVE_CONDITIONAL        variant_CPP11_120
#define variant_HAVE_REMOVE_CV          variant_CPP11_120
#define variant_HAVE_STD_ADD_POINTER    variant_CPP11_100 // <--
#define variant_HAVE_TYPE_TRAITS        variant_CPP11_90
#define variant_HAVE_ENABLE_IF          variant_CPP11_100 // <--
#define variant_HAVE_IS_SAME            variant_CPP11_100 // <--

#define variant_HAVE_TR1_TYPE_TRAITS    (!! variant_COMPILER_GNUC_VERSION )
#define variant_HAVE_TR1_ADD_POINTER    (!! variant_COMPILER_GNUC_VERSION || variant_CPP11_90 ) // <--

But I'm not sure my std headers is correct.

martinmoene commented 2 years ago

Thanks @Elite-stay, looks like it now works with MSVC 9.