[package - head-amd64-default][games/simutrans] Failed for simutrans-120.2.2 in build

Dimitry Andric dim at FreeBSD.org
Fri Jul 28 17:54:19 UTC 2017


On 28 Jul 2017, at 13:55, Tijl Coosemans <tijl at freebsd.org> wrote:
> 
> On Thu, 27 Jul 2017 21:42:01 +0000 pkg-fallout at FreeBSD.org wrote:
...
>> In file included from squirrel/squirrel/sqvm.cc:5:
>> In file included from /usr/include/c++/v1/math.h:310:
>> /usr/include/c++/v1/limits:149:85: error: expected expression
>>    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return type();}
>>                                                                                    ^
>> squirrel/squirrel/sqobject.h:131:24: note: expanded from macro 'type'
>> #define type(obj) ((obj)._type)
>>                       ^
> 
> Simutrans code defines 'type' as a macro.  Shouldn't libc++ headers use
> _type or __type or something?

No, the member name 'type' is used in many classes in the C++ standard
library, for example all the traits in <type_traits>.  Programs should
not attempt to redefine this, at least not as a macro.

Note that this also doesn't work with libstdc++, e.g.:

$ cat boom.cpp
#define type "nope, this will not work"
#include <type_traits>

and then:

$ g++ -c boom.cpp
boom.cpp:1:14: error: expected unqualified-id before string constant
 #define type "nope, this will not work"
              ^
boom.cpp:1:14: error: expected class-name before string constant
 #define type "nope, this will not work"
              ^
boom.cpp:1:14: error: expected '{' before string constant
boom.cpp:1:14: error: expected class-name before string constant
 #define type "nope, this will not work"
              ^
boom.cpp:1:14: error: expected '{' before string constant
boom.cpp:1:14: error: expected class-name before string constant
 #define type "nope, this will not work"
              ^
boom.cpp:1:14: error: expected '{' before string constant
boom.cpp:1:14: error: expected class-name before string constant
 #define type "nope, this will not work"
              ^
boom.cpp:1:14: error: expected '{' before string constant
boom.cpp:1:14: error: expected unqualified-id before string constant
 #define type "nope, this will not work"
              ^
In file included from boom.cpp:3:0:
/usr/local/lib/gcc6/include/c++/type_traits:212:60: error: template argument 1 is invalid
     : public __is_void_helper<typename remove_cv<_Tp>::type>::type
                                                            ^
/usr/local/lib/gcc6/include/c++/type_traits:212:61: error: expected '{' before '::' token
     : public __is_void_helper<typename remove_cv<_Tp>::type>::type
                                                             ^~
[...and lots more errors like this...]

-Dimitry

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 223 bytes
Desc: Message signed with OpenPGP
URL: <http://lists.freebsd.org/pipermail/freebsd-toolchain/attachments/20170728/636f5013/attachment.sig>


More information about the freebsd-toolchain mailing list