Knowledge Base

PRB: Ambiguous Msg If Function Template Return Type Omitted

Article ID: 143081

Article Last Modified on 7/5/2005


APPLIES TO


This article was previously published under Q143081

SYMPTOMS

Given a function template, if the return type is omitted, the error that results is a syntax error on the semicolon preceding the closing brace of the function.
minmax.cpp(4) : error C2059: syntax error : ';'

RESOLUTION

Specify a return type for the function template.

STATUS

This behavior is by design.

MORE INFORMATION

In C++, it is an error for a function to be declared without a return type. This is in compliance with the proposed ANSI C++ specification (ref. ARM, section 7.1.1).

Sample Code

    /* Compile options needed: /c */ 

   // This Min is in error (no return type is specified)
   template <class X> Min (X &t1, X &t2) {
      if (t1<t2) return t1;
      return t2;
   } //the error message appears for this line

   //This Min is correct
   template <class X> X& Min (X &t1, X &t2) {
      if (t1<t2) return t1;
      return t2;
   }
				

Keywords: kbprb kbcpponly kbcompiler KB143081