The following snippet: ------------8<-------------
#include <memory> typedef std::auto_ptr<int> v_type; v_type fn(int v) { v_type r(new int(4)); switch(v) { case 1: case 2: { return v_type(new int(5)); } break; default: return r; } } int main(int argc, char *argv[]) { fn(4); return 0; } ------------8<------------- compiled with: g++ -Wall -Werror test.cpp errornously produces: error: control reaches end of non-void function However, clearly, all control flow paths do return some result. Without the "break" statement the code compiles flawlessly. -- Summary: Invalid function return path analysis error report Product: gcc Version: 4.3.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: piotr dot wyderski at gmail dot com GCC host triplet: Windows Vista 64-bit, Core2, GCC 4.3.1 (cygwin) http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38552