[clang] clang-cl expansion of macros

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

[clang] clang-cl expansion of macros

Edward Diener-3
You can get clang-cl ( clang-win ) to show its VC++ emulated expansion
of macros somewhat by passing the c++ option
'-fmacro-backtrace-limit=0' to the compiler. It is still blessedly
difficult to see the what and the why of clang's error messages when
expanding macro using clang-cl, but at least it gives you a better
chance of understanding where clang's emulation of VC++ has gone wrong.

I have posted bug 27380 to the llvm/clang bug tracker at
https://llvm.org/bugs/show_bug.cgi?id=27380 showing the main failure in
VC++ emulation which I see when testing Boost PP with clang-cl.


_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Reply | Threaded
Open this post in threaded view
|

Re: [clang] clang-cl expansion of macros

degski
On 16 April 2016 at 01:15, Edward Diener <[hidden email]> wrote:

I have posted bug 27380 to the llvm/clang bug tracker...
>

Thanks for not giving up (also @ Niall D.)!

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Reply | Threaded
Open this post in threaded view
|

Re: [clang] clang-cl expansion of macros

Edward Diener-3
On 4/16/2016 12:58 AM, degski wrote:
> On 16 April 2016 at 01:15, Edward Diener <[hidden email]> wrote:
>
> I have posted bug 27380 to the llvm/clang bug tracker...
>>
>
> Thanks for not giving up (also @ Niall D.)!

There's more. See bug 27382 at
https://llvm.org/bugs/show_bug.cgi?id=27382. And there is almost
certainly more if the further errors from running the Boost PP tests are
indicating other separate bugs. But I won't pursue further bug reports
along those lines until I can ascertain whether or not fixing the ones
that I have reported causes the remaining ones that appear when running
the Boost PP tests to go away or not. And I haven't even started on
clang-cl preprocessor bugs which the tests of VMD might reveal !

As I suspected the task of emulating the non-standard preprocessor
behavior of VC++ is a daunting task and largely a fool's errand. If
clang targeting VC++ had limited themselves to using their VC++
preprocessor emulation only for Windows headers and VC++ headers, while
allowing all other header files to use their normal C++ standard
conforming preprocessor, they would not have had to solve the emulation
problem for all preprocessor macros. But they would not listen to reason
concerning this.

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.


_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Reply | Threaded
Open this post in threaded view
|

Re: [clang] clang-cl expansion of macros

Niall Douglas
In reply to this post by degski
On 16 Apr 2016 at 7:58, degski wrote:

> On 16 April 2016 at 01:15, Edward Diener <[hidden email]> wrote:
>
> I have posted bug 27380 to the llvm/clang bug tracker...
> >
>
> Thanks for not giving up (also @ Niall D.)!

Thanks for saying so, but we could do a lot better.

I flicked through the clang source code and as far as I can tell from
a ten minute inspection, getting C99 preprocessor behaviour on MSVC
ABI targets is as easy as flipping a boolean on. Most of the other
MSVC preprocessor special behaviours only turn on with
-fms-compatibility=on, and we no longer need that turned on to use
Windows or indeed the MSVC CRT and STL. A source code patch ought to
be mostly figuring out how to add a command line argument to control
the C99 processor boolean, a few unit test cases to ensure rigour and
lack of regression, and that's about it.

The real effort behind such a patch would be navigating the internal
politics on getting the patch into trunk. I have no need in my own
code for a C99 preprocessor, hence I am not willing to invest that
effort. But others with a more pressing need may wish to do so.

Niall

--
ned Productions Limited Consulting
http://www.nedproductions.biz/ 
http://ie.linkedin.com/in/nialldouglas/




_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

SMime.p7s (8K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [clang] clang-cl expansion of macros

Edward Diener-3
On 4/17/2016 7:05 AM, Niall Douglas wrote:

> On 16 Apr 2016 at 7:58, degski wrote:
>
>> On 16 April 2016 at 01:15, Edward Diener <[hidden email]> wrote:
>>
>> I have posted bug 27380 to the llvm/clang bug tracker...
>>>
>>
>> Thanks for not giving up (also @ Niall D.)!
>
> Thanks for saying so, but we could do a lot better.
>
> I flicked through the clang source code and as far as I can tell from
> a ten minute inspection, getting C99 preprocessor behaviour on MSVC
> ABI targets is as easy as flipping a boolean on. Most of the other
> MSVC preprocessor special behaviours only turn on with
> -fms-compatibility=on, and we no longer need that turned on to use
> Windows or indeed the MSVC CRT and STL. A source code patch ought to
> be mostly figuring out how to add a command line argument to control
> the C99 processor boolean, a few unit test cases to ensure rigour and
> lack of regression, and that's about it.
>
> The real effort behind such a patch would be navigating the internal
> politics on getting the patch into trunk. I have no need in my own
> code for a C99 preprocessor, hence I am not willing to invest that
> effort. But others with a more pressing need may wish to do so.

Why not bring up the issue on the clang developers mailing list ? Clang
source code is not an area which Boost developers can affect in this
mailing list, but in the clang developers mailing list you might be able
to persuade a clang developer to listen to your suggestion(s).



_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Reply | Threaded
Open this post in threaded view
|

Re: [clang] clang-cl expansion of macros

Niall Douglas
On 17 Apr 2016 at 8:13, Edward Diener wrote:

> > The real effort behind such a patch would be navigating the internal
> > politics on getting the patch into trunk. I have no need in my own
> > code for a C99 preprocessor, hence I am not willing to invest that
> > effort. But others with a more pressing need may wish to do so.
>
> Why not bring up the issue on the clang developers mailing list ? Clang
> source code is not an area which Boost developers can affect in this
> mailing list, but in the clang developers mailing list you might be able
> to persuade a clang developer to listen to your suggestion(s).

That would be the "navigating the internal politics" I mentioned. I
have no current pressing need for a C99 conforming preprocessor in my
own code.

Niall

--
ned Productions Limited Consulting
http://www.nedproductions.biz/ 
http://ie.linkedin.com/in/nialldouglas/




_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

SMime.p7s (8K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [clang] clang-cl expansion of macros

Edward Diener-3
On 4/17/2016 11:41 AM, Niall Douglas wrote:

> On 17 Apr 2016 at 8:13, Edward Diener wrote:
>
>>> The real effort behind such a patch would be navigating the internal
>>> politics on getting the patch into trunk. I have no need in my own
>>> code for a C99 preprocessor, hence I am not willing to invest that
>>> effort. But others with a more pressing need may wish to do so.
>>
>> Why not bring up the issue on the clang developers mailing list ? Clang
>> source code is not an area which Boost developers can affect in this
>> mailing list, but in the clang developers mailing list you might be able
>> to persuade a clang developer to listen to your suggestion(s).
>
> That would be the "navigating the internal politics" I mentioned. I
> have no current pressing need for a C99 conforming preprocessor in my
> own code.

Nor do I as far as clang goes, since normal clang and clang targeting
mingw(-64)/gcc on Windows already has a C++ standard conformant
preprocessor already and works very well with Boost libraries.

I guess it must be those people who want to use clang targeting VC++ on
Windows, either by itself or with the VC++14 as the backend compiler,
who might want what you suggest. But since I know that isn't you from
your response and it is certainly not me, someone else can address the
issue of convincing clang to change their source, and "navigate the
internal politics" if they like.



_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Reply | Threaded
Open this post in threaded view
|

Re: [clang] clang-cl expansion of macros

degski
On 17 April 2016 at 21:35, Edward Diener <[hidden email]> wrote:

... clang targeting mingw(-64)/gcc on Windows ...
>

msys/mingw(-64)/gcc is not, in my experience, a good all-round solution...
it's a work-around (a kludge) and comes with compromises (like wine on
Linux)... the emulation is not complete (sounds familiar)... I only use one
lib compiled with mingw and that is OpenBlas, it requires a
fortran-compiler, as a result I'm stuck with a dll for that one :-(.

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Reply | Threaded
Open this post in threaded view
|

Re: [clang] clang-cl expansion of macros

Boost - Dev mailing list
In reply to this post by Edward Diener-3
On 16 April 2016 at 17:58, Edward Diener <[hidden email]> 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
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(65,9):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_MAIN'
1>          BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
1>          ^
1>
z:\vc\x64\include\boost/mpl/aux_/preprocessor/def_params_tail.hpp(97,5):
note: expanded from macro 'BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL'
1>      BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param,
BOOST_PP_IDENTITY(=value)) \
1>      ^
1>  note: (skipping 2 expansions in backtrace; use
-fmacro-backtrace-limit=0 to see all)
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(22,32):  note: expanded
from macro 'BOOST_PP_CAT'
1>  #    define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
1>                                 ^
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(31,53):  note: expanded
from macro 'BOOST_PP_CAT_I'
1>  #    define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
1>                                                      ^
1>  <scratch space>(8,1):  note: expanded from here
1>  BOOST_PP_REPEAT_1
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 :
template argument for template type parameter must be a type
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(68,17):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_MAIN'
1>          : name< BOOST_MPL_PP_PARAMS(i, 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>  note: (skipping 5 expansions in backtrace; use
-fmacro-backtrace-limit=0 to see all)
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(31,53):  note: expanded
from macro 'BOOST_PP_CAT_I'
1>  #    define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
1>                                                      ^~~~~~
1>  <scratch space>(33,1):  note: expanded from here
1>  T2
1>  ^~
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(32,37):  note: expanded
from macro 'BOOST_PP_CAT_II'
1>  #    define BOOST_PP_CAT_II(p, res) res
1>                                      ^~~
1>  z:\vc\x64\include\boost/mpl/aux_/preprocessed/plain/or.hpp(45,39):
note: template parameter is declared here
1>      , typename BOOST_MPL_AUX_NA_PARAM(T2)
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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:15:
1>  In file included from z:\vc\x64\include\boost/mpl/eval_if.hpp:17:
1>z:\vc\x64\include\boost/mpl/if.hpp(131,23): error : too many arguments
provided to function-like macro invocation
1>  BOOST_MPL_AUX_NA_SPEC(3, if_)
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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:15:
1>  In file included from z:\vc\x64\include\boost/mpl/eval_if.hpp:17:
1>z:\vc\x64\include\boost/mpl/if.hpp(131,1): error : expected a qualified
name after 'typename'
1>  BOOST_MPL_AUX_NA_SPEC(3, if_)
1>  ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(161,40):  note: expanded
from macro 'BOOST_MPL_AUX_NA_SPEC'
1>  #define BOOST_MPL_AUX_NA_SPEC(i, name) \
1>                                         ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(154,47):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_NO_ETI'
1>  #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, 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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:15:
1>  In file included from z:\vc\x64\include\boost/mpl/eval_if.hpp:17:
1>z:\vc\x64\include\boost/mpl/if.hpp(131,1): error : expected ',' or '>' in
template-parameter-list
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(161,40):  note: expanded
from macro 'BOOST_MPL_AUX_NA_SPEC'
1>  #define BOOST_MPL_AUX_NA_SPEC(i, name) \
1>                                         ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(154,47):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_NO_ETI'
1>  #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
1>                                                ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(65,9):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_MAIN'
1>          BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
1>          ^
1>  note: (skipping 3 expansions in backtrace; use
-fmacro-backtrace-limit=0 to see all)
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(22,32):  note: expanded
from macro 'BOOST_PP_CAT'
1>  #    define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
1>                                 ^
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(31,53):  note: expanded
from macro 'BOOST_PP_CAT_I'
1>  #    define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
1>                                                      ^
1>  <scratch space>(4,1):  note: expanded from here
1>  BOOST_PP_REPEAT_1
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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:15:
1>  In file included from z:\vc\x64\include\boost/mpl/eval_if.hpp:17:
1>z:\vc\x64\include\boost/mpl/if.hpp(131,1): error : template argument for
template type parameter must be a type
1>  BOOST_MPL_AUX_NA_SPEC(3, if_)
1>  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(161,40):  note: expanded
from macro 'BOOST_MPL_AUX_NA_SPEC'
1>  #define BOOST_MPL_AUX_NA_SPEC(i, name) \
1>                                         ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(154,47):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_NO_ETI'
1>  #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
1>                                                ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(68,17):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_MAIN'
1>          : name< BOOST_MPL_PP_PARAMS(i, T) > \
1>                  ^~~~~~~~~~~~~~~~~~~~~~~~~
1>  note: (skipping 6 expansions in backtrace; use
-fmacro-backtrace-limit=0 to see all)
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(31,53):  note: expanded
from macro 'BOOST_PP_CAT_I'
1>  #    define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
1>                                                      ^~~~~~
1>  <scratch space>(29,1):  note: expanded from here
1>  T3
1>  ^~
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(32,37):  note: expanded
from macro 'BOOST_PP_CAT_II'
1>  #    define BOOST_PP_CAT_II(p, res) res
1>                                      ^~~
1>  z:\vc\x64\include\boost/mpl/if.hpp(53,39):  note: template parameter is
declared here
1>      , typename BOOST_MPL_AUX_NA_PARAM(T3)
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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:15:
1>z:\vc\x64\include\boost/mpl/eval_if.hpp(67,23): error : too many
arguments provided to function-like macro invocation
1>  BOOST_MPL_AUX_NA_SPEC(3, eval_if)
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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:15:
1>z:\vc\x64\include\boost/mpl/eval_if.hpp(67,1): error : expected a
qualified name after 'typename'
1>  BOOST_MPL_AUX_NA_SPEC(3, eval_if)
1>  ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(161,40):  note: expanded
from macro 'BOOST_MPL_AUX_NA_SPEC'
1>  #define BOOST_MPL_AUX_NA_SPEC(i, name) \
1>                                         ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(154,47):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_NO_ETI'
1>  #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, 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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:15:
1>z:\vc\x64\include\boost/mpl/eval_if.hpp(67,1): error : expected ',' or
'>' in template-parameter-list
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(161,40):  note: expanded
from macro 'BOOST_MPL_AUX_NA_SPEC'
1>  #define BOOST_MPL_AUX_NA_SPEC(i, name) \
1>                                         ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(154,47):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_NO_ETI'
1>  #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
1>                                                ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(65,9):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_MAIN'
1>          BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
1>          ^
1>  note: (skipping 3 expansions in backtrace; use
-fmacro-backtrace-limit=0 to see all)
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(22,32):  note: expanded
from macro 'BOOST_PP_CAT'
1>  #    define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
1>                                 ^
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(31,53):  note: expanded
from macro 'BOOST_PP_CAT_I'
1>  #    define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
1>                                                      ^
1>  <scratch space>(29,1):  note: expanded from here
1>  BOOST_PP_REPEAT_1
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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:15:
1>z:\vc\x64\include\boost/mpl/eval_if.hpp(67,1): error : template argument
for template type parameter must be a type
1>  BOOST_MPL_AUX_NA_SPEC(3, eval_if)
1>  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(161,40):  note: expanded
from macro 'BOOST_MPL_AUX_NA_SPEC'
1>  #define BOOST_MPL_AUX_NA_SPEC(i, name) \
1>                                         ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(154,47):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_NO_ETI'
1>  #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
1>                                                ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(68,17):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_MAIN'
1>          : name< BOOST_MPL_PP_PARAMS(i, T) > \
1>                  ^~~~~~~~~~~~~~~~~~~~~~~~~
1>  note: (skipping 6 expansions in backtrace; use
-fmacro-backtrace-limit=0 to see all)
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(31,53):  note: expanded
from macro 'BOOST_PP_CAT_I'
1>  #    define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
1>                                                      ^~~~~~
1>  <scratch space>(32,1):  note: expanded from here
1>  T3
1>  ^~
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(32,37):  note: expanded
from macro 'BOOST_PP_CAT_II'
1>  #    define BOOST_PP_CAT_II(p, res) res
1>                                      ^~~
1>  z:\vc\x64\include\boost/mpl/eval_if.hpp(29,39):  note: template
parameter is declared here
1>      , typename BOOST_MPL_AUX_NA_PARAM(F2)
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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:16:
1>z:\vc\x64\include\boost/mpl/identity.hpp(40,30): error : too many
arguments provided to function-like macro invocation
1>  BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, identity)
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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:16:
1>z:\vc\x64\include\boost/mpl/identity.hpp(40,1): error : expected a
qualified name after 'typename'
1>  BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, identity)
1>  ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(154,47):  note: expanded
from macro 'BOOST_MPL_AUX_NA_SPEC_NO_ETI'
1>  #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, 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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:16:
1>z:\vc\x64\include\boost/mpl/identity.hpp(40,1): error : expected ',' or
'>' in template-parameter-list
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(154,47):  note: expanded
from macro 'BOOST_MPL_AUX_NA_SPEC_NO_ETI'
1>  #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
1>                                                ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(65,9):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_MAIN'
1>          BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
1>          ^
1>
z:\vc\x64\include\boost/mpl/aux_/preprocessor/def_params_tail.hpp(97,5):
note: expanded from macro 'BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL'
1>      BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param,
BOOST_PP_IDENTITY(=value)) \
1>      ^
1>  note: (skipping 2 expansions in backtrace; use
-fmacro-backtrace-limit=0 to see all)
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(22,32):  note: expanded
from macro 'BOOST_PP_CAT'
1>  #    define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
1>                                 ^
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(31,53):  note: expanded
from macro 'BOOST_PP_CAT_I'
1>  #    define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
1>                                                      ^
1>  <scratch space>(32,1):  note: expanded from here
1>  BOOST_PP_REPEAT_1
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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:16:
1>z:\vc\x64\include\boost/mpl/identity.hpp(40,1): error : template argument
for template type parameter must be a type
1>  BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, identity)
1>  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(154,47):  note: expanded
from macro 'BOOST_MPL_AUX_NA_SPEC_NO_ETI'
1>  #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
1>                                                ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(68,17):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_MAIN'
1>          : name< BOOST_MPL_PP_PARAMS(i, 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>  note: (skipping 5 expansions in backtrace; use
-fmacro-backtrace-limit=0 to see all)
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(31,53):  note: expanded
from macro 'BOOST_PP_CAT_I'
1>  #    define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
1>                                                      ^~~~~~
1>  <scratch space>(32,1):  note: expanded from here
1>  T1
1>  ^~
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(32,37):  note: expanded
from macro 'BOOST_PP_CAT_II'
1>  #    define BOOST_PP_CAT_II(p, res) res
1>                                      ^~~
1>  z:\vc\x64\include\boost/mpl/identity.hpp(23,39):  note: template
parameter is declared here
1>        typename BOOST_MPL_AUX_NA_PARAM(T)
1>                                        ^
1>z:\vc\x64\include\boost/mpl/identity.hpp(41,30): error : too many
arguments provided to function-like macro invocation
1>  BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, make_identity)
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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:16:
1>z:\vc\x64\include\boost/mpl/identity.hpp(41,1): error : expected a
qualified name after 'typename'
1>  BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, make_identity)
1>  ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(154,47):  note: expanded
from macro 'BOOST_MPL_AUX_NA_SPEC_NO_ETI'
1>  #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, 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:14:
1>  In file included from
z:\vc\x64\include\boost/iterator/iterator_categories.hpp:16:
1>z:\vc\x64\include\boost/mpl/identity.hpp(41,1): error : expected ',' or
'>' in template-parameter-list
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(154,47):  note: expanded
from macro 'BOOST_MPL_AUX_NA_SPEC_NO_ETI'
1>  #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
1>                                                ^
1>  z:\vc\x64\include\boost/mpl/aux_/na_spec.hpp(65,9):  note: expanded
from macro '\
1>
1>  BOOST_MPL_AUX_NA_SPEC_MAIN'
1>          BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
1>          ^
1>
z:\vc\x64\include\boost/mpl/aux_/preprocessor/def_params_tail.hpp(97,5):
note: expanded from macro 'BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL'
1>      BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param,
BOOST_PP_IDENTITY(=value)) \
1>      ^
1>  note: (skipping 2 expansions in backtrace; use
-fmacro-backtrace-limit=0 to see all)
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(22,32):  note: expanded
from macro 'BOOST_PP_CAT'
1>  #    define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
1>                                 ^
1>  z:\vc\x64\include\boost/preprocessor/cat.hpp(31,53):  note: expanded
from macro 'BOOST_PP_CAT_I'
1>  #    define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
1>                                                      ^
1>  <scratch space>(61,1):  note: expanded from here
1>  BOOST_PP_REPEAT_1
1>  ^
1>CL : fatal error : too many errors emitted, stopping now [-ferror-limit=]
1>  20 errors generated.
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========


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

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost