Dev - C++ - error en plantilla funcion

 
Vista:

error en plantilla funcion

Publicado por luis (1 intervención) el 18/10/2006 10:22:51
Estoy utilizando el siguiente codigo sencillo para plantillas de funciones:

#include <cstdlib>
#include <iostream>
using namespace std;

template<class T> T min(T a, T b)
{
if (a > b)
return a;
else
return b;
}

int main(int argc, char *argv[])
{
int x=11, y=5;
int res=0;
res=min(x, y);
cout << res << endl;

system("PAUSE");
return EXIT_SUCCESS;
}

Pero al compilar me produce el siguiente error:

Linea Unidad Mensaje
------------------------------------------------------------------------------------
C:\ProyC++\PlantFunc01\main.cpp In function `int main(int, char**)':
18 C:\ProyC++\PlantFunc01\main.cpp call of overloaded `min(int&, int&)' is ambiguous
note C:\ProyC++\PlantFunc01\main.cpp:7 candidates are: T min(T, T) [with T = int]
note C:\ProyC++\PlantFunc01\main.cpp:7 const _Tp& std::min(const _Tp&, const _Tp&) [with _Tp = std::streamsize]
C:\ProyC++\PlantFunc01\Makefile.win [Build Error] [main.o] Error 1

Esto trabajando con la version 4.9.9.2 de Dev-C++

Una solucion ha sido poner parametros por referencia en la funcion de la plantilla:

template<class T> T min(T& a, T& b)

De esta forma sí funciona pero no entiendo por qué al principio da error.

Gracias y salu2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:error en plantilla funcion

Publicado por R.G.A.M. (10 intervenciones) el 21/06/2007 00:56:40
Al parecer, al menos una de las dos librerías utilizada para compilar el programa (en plataforma DOS) tiene un error.

Cuando yo uso la versión 4.9.9.2, al compilar y ejecutar, surge lo siguiente:
1. Los caracteres extendidos son reemplazados por otros (por ejemplo, tengo que utilizar el caracter "£" para que me devuelva "ó" al ejecutar el programa).
2. Si ingreso un caracter cuendo me pide para leer una variable numérica, automáticamente hace algo similar a que lee todas las variables, mas no modifica su valor inicial (algunas quedan vacías).

¿Cómo podría corregir ese error? ¿Necesitaría bajarme alguna librería que no contenga dicho error?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar