$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: David Abrahams (dave_at_[hidden])
Date: 2002-12-04 10:07:48
Gennaro Prota <gennaro_prota_at_[hidden]> writes:
> On Tue, 03 Dec 2002 20:55:02 -0500, David Abrahams
> <dave_at_[hidden]> wrote:
>
>>
>>I'd like a macro to detect that a compiler requires a return value
>>even when no paths return from a function. Example:
>>
>>    int f()
>>    {
>>        throw "hello";
>>    };
>>
>>If this fails to compile, we may need to add a dummy "return 0;" at
>>the end.
>
> I'm a little surprised by this question. Are you saying that *no*
> paths return a value and you declare the function as non void?
Yes. Actually I was wrong about aCC; it only warns. Still annoying, though.
> Maybe you were referring to a situation like this?
>
>
>   // The throw is conditional, and there's at
>   // least one path that does return a value
>   //
>   template <typename ExceptionT>
>   void do_throw(ExceptionT const & ex) { throw ex; }
>
>
>   int f() {
>     for ( ...)
>       if  (...)
>         return somevalue;
>
>     do_throw( some_exception() );
>   }
No. There are several instances like the one I cited in our test suite
(the function lib, I think).
-- 
                       David Abrahams
   dave_at_[hidden] * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution