<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Feb 20, 2014 at 12:43 PM, Michael Steinberg <span dir="ltr"><<a href="mailto:michael.steinberg@tu-clausthal.de" target="_blank">michael.steinberg@tu-clausthal.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    Hrmmm,<br>
    thank you very much for verifying, and many excuses for the bother
    then. The error must be elsewhere then. Do you get a "noreturn"
    attribute decoration for the type of the function pointer btw?<br></div></blockquote><div><br></div><div>No. We don't deduce a 'noreturn' attribute from the function definition, and I don't think we ever did. If you're seeing one somewhere, I expect your code is adding it itself.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF">
    Just for the context, the error message given that I try to reason
    about (I don't have clang myself) is<br>
    <br>
>>>>>>>>>>>>>>>>>>>>><br>
    <pre><code>In file included from ../test/test_exception_handlers.cpp:7:
In file included from ../luabind/luabind.hpp:27:
In file included from ../luabind/class.hpp:89:
../luabind/function.hpp:28:43: error: no matching function for call to 'deduce_signature'
          object fn = make_function(L, f, deduce_signature(f), policies);
                                          ^~~~~~~~~~~~~~~~
../luabind/function.hpp:48:13: note: in instantiation of member function 'luabind::detail::function_registration<void (*)() __attribute__((noreturn)), luabind::detail::null_type>::register_' requested here
        new detail::function_registration<F, Policies>(name, f, policies)));
            ^
../luabind/function.hpp:54:12: note: in instantiation of function template specialization 'luabind::def<void (*)() __attribute__((noreturn)), luabind::detail::null_type>' requested here
    return def(name, f, detail::null_type());
           ^
../test/test_exception_handlers.cpp:50:9: note: in instantiation of function template specialization 'luabind::def<void (*)() __attribute__((noreturn))>' requested here
        def("raise", &raise_my_exception),</code></pre></div></blockquote><div><div>Can you show us the declaration (preferably after preprocessing) of raise_my_exception? (Also maybe of luabind::def.)</div>
</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div text="#000000" bgcolor="#FFFFFF"><pre><code>
        ^
../luabind/detail/deduce_signature.hpp:47:5: note: candidate template ignored: disabled by 'enable_if' [with F = void (*)() __attribute__((noreturn))]
    is_function<F>,
    ^
../luabind/detail/deduce_signature.hpp:60:1: note: candidate function template not viable: requires 2 arguments, but 1 was provided
deduce_signature(F, Wrapped*)

>>>>>>>>>>>>>>>>>>>>>>
</code></pre>
    I hope you don't see garbage due to html there.<br>
    The "deduce_signature" function indicated there has exactly the same
    signature as the one I gave in my OP-sample and the F-Type is a
    pointer to void-function which always throws. It should normally
    match, but apparently on clang 3.2 (in that very specific
    environment) it doesn't. That __attribute((noreturn))__ looked
    suspicious to me, but maybe it's something with the is_function
    template. I will investigate further, what might go wrong there.<br>
    <br>
    Thank you again!<span class=""><font color="#888888"><br>
    <br>
    Michael<br>
  </font></span></div>

</blockquote></div><br></div></div>