Re: luabind 0.9 compile error with clang 3.2

Ryan Pavlik <[email protected]> Thu, 3 Jan 2013 15:19:01 -0600
Newsgroups gmane.comp.lang.lua.bind.user
Message-ID <CABMFTE-QvB3PT4x6Hcizp8oT4qkTfDY=8nO0j-s8u3V9OYrs0Q@mail.gmail.com>
Which repository/commit are you using? I've been compiling using clang
trunk without issue, on my github branch: http://github.com/rpavlik/luabind

Ryan


On Mon, Dec 31, 2012 at 11:21 AM, Tomasz Mikolajczyk <
[email protected]> wrote:

> Hi.
>
> The latest clang 3.2 detected an ambiguous forward declarations in
> detail/format_signature.hpp file:
>
> {{{
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:8:
> In file included from /home/tomaszmi/luabind/make_function.hpp:13:
> /home/tomaszmi/luabind/detail/format_signature.hpp:95:33: error:
> reference to 'object' is ambiguous
> LUABIND_TYPE_TO_STRING(luabind::object)
>                                 ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:73:27: note:
> expanded from macro 'LUABIND_TYPE_TO_STRING'
>     struct type_to_string<x> \
>                           ^
> /home/tomaszmi/luabind/object.hpp:826:12: note: candidate found by
> name lookup is 'luabind::object'
> using adl::object;
>            ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note:
> candidate found by name lookup is 'luabind::object'
> class object;
>       ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:96:33: error:
> reference to 'argument' is ambiguous
> LUABIND_TYPE_TO_STRING(luabind::argument)
>                                 ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:73:27: note:
> expanded from macro 'LUABIND_TYPE_TO_STRING'
>     struct type_to_string<x> \
>                           ^
> /home/tomaszmi/luabind/object.hpp:827:12: note: candidate found by
> name lookup is 'luabind::argument'
> using adl::argument;
>            ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:19:7: note:
> candidate found by name lookup is 'luabind::argument'
> class argument;
>       ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:102:23: error:
> reference to 'table' is ambiguous
> struct type_to_string<table<Base> >
>                       ^
> /home/tomaszmi/luabind/object.hpp:1189:12: note: candidate found by
> name lookup is 'luabind::table'
> using adl::table;
>            ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:21:8: note:
> candidate found by name lookup is 'luabind::table'
> struct table;
>        ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:102:29: error:
> 'Base' does not refer to a value
> struct type_to_string<table<Base> >
>                             ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:101:17: note: declared
> here
> template <class Base>
>                 ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:8:
> /home/tomaszmi/luabind/make_function.hpp:95:15: error: reference to
> 'object' is ambiguous
>   LUABIND_API object make_function_aux(
>               ^
> /home/tomaszmi/luabind/object.hpp:826:12: note: candidate found by
> name lookup is 'luabind::object'
> using adl::object;
>            ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note:
> candidate found by name lookup is 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:8:
> /home/tomaszmi/luabind/make_function.hpp:99:33: error: reference to
> 'object' is ambiguous
>   LUABIND_API void add_overload(object const&, char const*, object const&);
>                                 ^
> /home/tomaszmi/luabind/object.hpp:826:12: note: candidate found by
> name lookup is 'luabind::object'
> using adl::object;
>            ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note:
> candidate found by name lookup is 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:8:
> /home/tomaszmi/luabind/make_function.hpp:99:33: error: reference to
> 'object' is ambiguous
>   LUABIND_API void add_overload(object const&, char const*, object const&);
>                                 ^
> /home/tomaszmi/luabind/object.hpp:826:12: note: candidate found by
> name lookup is 'luabind::object'
> using adl::object;
>            ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note:
> candidate found by name lookup is 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:8:
> /home/tomaszmi/luabind/make_function.hpp:99:61: error: reference to
> 'object' is ambiguous
>   LUABIND_API void add_overload(object const&, char const*, object const&);
>                                                             ^
> /home/tomaszmi/luabind/object.hpp:826:12: note: candidate found by
> name lookup is 'luabind::object'
> using adl::object;
>            ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note:
> candidate found by name lookup is 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:8:
> /home/tomaszmi/luabind/make_function.hpp:104:1: error: reference to
> 'object' is ambiguous
> object make_function(lua_State* L, F f, Signature, Policies)
> ^
> /home/tomaszmi/luabind/object.hpp:826:12: note: candidate found by
> name lookup is 'luabind::object'
> using adl::object;
>            ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note:
> candidate found by name lookup is 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:8:
> /home/tomaszmi/luabind/make_function.hpp:104:8: error: incomplete
> result type 'luabind::object' in function definition
> object make_function(lua_State* L, F f, Signature, Policies)
>        ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note: forward
> declaration of 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:8:
> /home/tomaszmi/luabind/make_function.hpp:115:1: error: reference to
> 'object' is ambiguous
> object make_function(lua_State* L, F f)
> ^
> /home/tomaszmi/luabind/object.hpp:826:12: note: candidate found by
> name lookup is 'luabind::object'
> using adl::object;
>            ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note:
> candidate found by name lookup is 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:8:
> /home/tomaszmi/luabind/make_function.hpp:115:8: error: incomplete
> result type 'luabind::object' in function definition
> object make_function(lua_State* L, F f)
>        ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note: forward
> declaration of 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:10:
> /home/tomaszmi/luabind/detail/call_function.hpp:224:26: error:
> reference to 'object' is ambiguous
>                         friend class luabind::object;
>                                               ^
> /home/tomaszmi/luabind/object.hpp:826:12: note: candidate found by
> name lookup is 'luabind::object'
> using adl::object;
>            ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note:
> candidate found by name lookup is 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:10:
> In file included from /home/tomaszmi/luabind/detail/call_function.hpp:320:
> In file included from
> /home/tomaszmi/boost/preprocessor/iteration/detail/iter/forward1.hpp:47:
> /home/tomaszmi/luabind/detail/call_function.hpp:361:25: error:
> reference to 'object' is ambiguous
>         call_function(luabind::object const& obj
> BOOST_PP_COMMA_IF(BOOST_PP_ITERATION())
> BOOST_PP_ENUM(BOOST_PP_ITERATION(), LUABIND_OPERATOR_PARAMS, _) )
>                                ^
> /home/tomaszmi/luabind/object.hpp:826:12: note: candidate found by
> name lookup is 'luabind::object'
> using adl::object;
>            ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note:
> candidate found by name lookup is 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:10:
> In file included from /home/tomaszmi/luabind/detail/call_function.hpp:320:
> In file included from
> /home/tomaszmi/boost/preprocessor/iteration/detail/iter/forward1.hpp:47:
> /home/tomaszmi/luabind/detail/call_function.hpp:373:6: error: member
> access into incomplete type 'const luabind::object'
>                 obj.push(obj.interpreter());
>                    ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note: forward
> declaration of 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:10:
> In file included from /home/tomaszmi/luabind/detail/call_function.hpp:320:
> In file included from
> /home/tomaszmi/boost/preprocessor/iteration/detail/iter/forward1.hpp:47:
> /home/tomaszmi/luabind/detail/call_function.hpp:374:24: error: member
> access into incomplete type 'const luabind::object'
>                 return proxy_type(obj.interpreter(), 1, &detail::pcall,
> args);
>                                      ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note: forward
> declaration of 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:10:
> In file included from /home/tomaszmi/luabind/detail/call_function.hpp:320:
> In file included from
> /home/tomaszmi/boost/preprocessor/iteration/detail/iter/forward1.hpp:47:
> /home/tomaszmi/luabind/detail/call_function.hpp:404:27: error:
> reference to 'object' is ambiguous
>         resume_function(luabind::object const& obj
> BOOST_PP_COMMA_IF(BOOST_PP_ITERATION())
> BOOST_PP_ENUM(BOOST_PP_ITERATION(), LUABIND_OPERATOR_PARAMS, _) )
>                                  ^
> /home/tomaszmi/luabind/object.hpp:826:12: note: candidate found by
> name lookup is 'luabind::object'
> using adl::object;
>            ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note:
> candidate found by name lookup is 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:10:
> In file included from /home/tomaszmi/luabind/detail/call_function.hpp:320:
> In file included from
> /home/tomaszmi/boost/preprocessor/iteration/detail/iter/forward1.hpp:47:
> /home/tomaszmi/luabind/detail/call_function.hpp:416:6: error: member
> access into incomplete type 'const luabind::object'
>                 obj.push(obj.interpreter());
>                    ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note: forward
> declaration of 'luabind::object'
> class object;
>       ^
> In file included from /home/tomaszmi/src/stack_content_by_name.cpp:27:
> In file included from /home/tomaszmi/luabind/luabind.hpp:28:
> In file included from /home/tomaszmi/luabind/class.hpp:94:
> In file included from /home/tomaszmi/luabind/function.hpp:10:
> In file included from /home/tomaszmi/luabind/detail/call_function.hpp:320:
> In file included from
> /home/tomaszmi/boost/preprocessor/iteration/detail/iter/forward1.hpp:47:
> /home/tomaszmi/luabind/detail/call_function.hpp:417:24: error: member
> access into incomplete type 'const luabind::object'
>                 return proxy_type(obj.interpreter(), 1,
> &detail::resume_impl, args);
>                                      ^
> /home/tomaszmi/luabind/detail/format_signature.hpp:18:7: note: forward
> declaration of 'luabind::object'
> class object;
>       ^
> fatal error: too many errors emitted, stopping now [-ferror-limit=]
> 20 errors generated.
> }}}
>
>
> The object, argument and table<> classes are declared in the
> luabind::adl namespace, so the forward declarations should follow
> that:
>
> namespace luabind { namespace adl {
>
> class object;
> class argument;
> template <class Base>
> struct table;
>
> } // namespace adl
>
> using adl::object;
> using adl::argument;
> using adl::table;
>
> } // namespace luabind
>
> See the attached format_signature.hpp file containing the fix.
>
> Regards,
> Tomek
>
>
> ------------------------------------------------------------------------------
> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
> MVPs and experts. SALE $99.99 this month only -- learn more at:
> http://p.sf.net/sfu/learnmore_122412
> _______________________________________________
> luabind-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/luabind-user
>
>


-- 
Ryan Pavlik
HCI Graduate Student
Virtual Reality Applications Center
Iowa State University

[email protected]
http://academic.cleardefinition.com

------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712

_______________________________________________
luabind-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/luabind-user