I've sent this again as there was no boost-bounce message. I've reduced the error output.

On 16 April 2016 at 17:58, Edward Diener <eldiener@tropicsoft.com> wrote:
What I strongly suspect will finally happen is that clang will not fix these emulation problems because they are too tricky and numerous to do. Instead they will probably declare that their emulation is good enough for the majority of preprocessor constructs and that Boost PP, which pushes the preprocessor to its limits, is not meant to work with their flawed VC++ emulation. I hope I am wrong about that supposition, but having spent much time in Boost PP and Boost VMD trying to workaround VC++ non-standard preprocessor behavior I can envision that having to code "down" to that behavior in numerous complicated instances will be too much time consuming work for the clang developers who have chosen to work with VC++ preprocessor emulation.


I've successfully built boost-1.64 with VC1410 (from the developer command prompt). Trying to use boost with a project using Clang 4.0.0 (both the LLVM and C2 backends) gives me the following PP error messages:


1>------ Rebuild All started: Project: test, Configuration: Debug x64 ------
1>  In file included from test.cpp:16:
1>  In file included from z:\vc\x64\include\boost/filesystem.hpp:16:
1>  In file included from z:\vc\x64\include\boost/filesystem/path.hpp:28:
1>  In file included from z:\vc\x64\include\boost/iterator/iterator_facade.hpp:12:
1>  In file included from z:\vc\x64\include\boost/iterator/interoperable.hpp:11:
1>  In file included from z:\vc\x64\include\boost/mpl/or.hpp:43:
1>  In file included from z:\vc\x64\include\boost/mpl/aux_/include_preprocessed.hpp:37:
1>z:\vc\x64\include\boost/mpl/aux_/preprocessed/plain/or.hpp(59,7): error : too many arguments provided to function-like macro invocation
1>        2
1>        ^
1>  z:\vc\x64\include\boost/preprocessor/facilities/expand.hpp(26,10):  note: macro 'BOOST_PP_EXPAND_I' defined here
1>  # define BOOST_PP_EXPAND_I(x) x
1>           ^
1>  In file included from test.cpp:16:
1>  In file included from z:\vc\x64\include\boost/filesystem.hpp:16:
1>  In file included from z:\vc\x64\include\boost/filesystem/path.hpp:28:
1>  In file included from z:\vc\x64\include\boost/iterator/iterator_facade.hpp:12:
1>  In file included from z:\vc\x64\include\boost/iterator/interoperable.hpp:11:
1>  In file included from z:\vc\x64\include\boost/mpl/or.hpp:43:
1>  In file included from z:\vc\x64\include\boost/mpl/aux_/include_preprocessed.hpp:37:
1>z:\vc\x64\include\boost/mpl/aux_/preprocessed/plain/or.hpp(58,1): error : expected a qualified name after 'typename'
1>  BOOST_MPL_AUX_NA_SPEC2(
1>  ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(166,44):  note: expanded from macro 'BOOST_MPL_AUX_NA_SPEC2'
1>  #define BOOST_MPL_AUX_NA_SPEC2(i, j, name) \
1>                                             ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(64,11):  note: expanded from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_MAIN'
1>            BOOST_MPL_PP_PARAMS(i, typename T) \
1>            ^
1>  z:\vc\x64\include\boost/mpl/aux_/preprocessor/params.hpp(58,11):  note: expanded from macro 'BOOST_MPL_PP_PARAMS'
1>          , BOOST_MPL_PP_AUX_PARAM_FUNC \
1>            ^
1>  In file included from test.cpp:16:
1>  In file included from z:\vc\x64\include\boost/filesystem.hpp:16:
1>  In file included from z:\vc\x64\include\boost/filesystem/path.hpp:28:
1>  In file included from z:\vc\x64\include\boost/iterator/iterator_facade.hpp:12:
1>  In file included from z:\vc\x64\include\boost/iterator/interoperable.hpp:11:
1>  In file included from z:\vc\x64\include\boost/mpl/or.hpp:43:
1>  In file included from z:\vc\x64\include\boost/mpl/aux_/include_preprocessed.hpp:37:
1>z:\vc\x64\include\boost/mpl/aux_/preprocessed/plain/or.hpp(58,1): error : expected ',' or '>' in template-parameter-list


Up till now I was using a hacked boost-1.62. So in order to see what would happen, I also built boost-1.63. Apart from a small change in type_with_alignment.hpp (adding a ckeck for _MSC_VER not to exist if __clang__ does exist in line 87), boost-1.63 compiles without a problem (no specific (relevant to the emulation) command line parameters).

Is there a macro I should define or is there something else I should set/do in order to use boost-1.64 with Clang 4.0.0 on windows? Any other suggestions?
 
degski
--
"Ihre sogenannte Religion wirkt bloß wie ein Opiat reizend, betäubend, Schmerzen aus Schwäche stillend." - Novalis 1798