Compiling Boost in VC++ .Net
Hello Boost Users, I am a newbie to the Boost Graph library and am trying to come up to speed with the use of the library as quickly as I can. Last week I thought that one of the best ways to do this would be to work through some of the example code in the Boost User Guide and Reference Manual but I was disappointed to find out that the moment I included some boost header files in my VC++ .Net project that I ran into a C1001 FATAL COMPILER ERROR. This problem doesn't occur in VC6 nor does it occur in the Borland 5.5 C++ compiler, however, my current project dictates that I use the VC++ .Net compiler. Before jumping on to this list with a posting I searched the archive and noticed that a previous posting had been lodged with the same compiler error. To cut a long story short I have been in touch with Microsoft Technical support (who were extremely helpful) and they have confirmed my issue (and that of the previous posting) to be a bug in the VC++ .Net compiler. Microsoft also gave me a work around for the problem so the main purpose of this posting is to make public the work around in order to use the BGL with the VC++ .Net compiler. As I am new to the BGL if anyone has any comments on the validity of the work around provided by Microsoft I would be grateful to hear them. I have tried compiling the code and it now compiles, however, as I am new to the library I am not yet in a position where I have tried out the library in a project to verify that it besides compiling correctly, that it also works correctly ;0) Here's the work around: composite_traits.hpp template <typename T> // line 149 struct is_array { private: static T t; public: #if _MSC_VER == 1300 // VC.Net static const bool value; #else // This is the original code block that causes the compiler error BOOST_STATIC_CONSTANT(bool, value = (::boost::type_traits::ice_and< (1 == sizeof(detail::is_array_helper(&t, t))), ::boost::type_traits::ice_not< ::boost::detail::is_reference_or_const_volatile<T>::value>::value, ::boost::type_traits::ice_not< (1 == sizeof(detail::is_function_tester(t)))>::value >::value)); #endif }; #if _MSC_VER == 1300 // VC.Net template <typename T> const bool is_array<T>::value = (::boost::type_traits::ice_and< (1 == sizeof(detail::is_array_helper(&t, t))), ::boost::type_traits::ice_not< ::boost::detail::is_reference_or_const_volatile<T>::value>::value, ::boost::type_traits::ice_not< (1 == sizeof(detail::is_function_tester(t)))>::value >::value)); #endif Kind Regards, Wayne Hartell [Non-text portions of this message have been removed]
participants (1)
-
Wayne Hartell