erreur: aucune fonction correspondante pour l'appel à 'min (long unsigned int & amp ;, unsigned int & amp;)'
Je suis sous ubuntu 12.04 - 64 bits. Je l'ai testé avec boost 1.46, 1.48, 1,52 et
gcc 4.4 et 4.6
Lorsque j'essaie de compiler:
while (m_burstReqBeatsRemain) {
if (m_burstReqAddress % m_dramRowSize == 0) {
m_admRequestQueue.push_back(adm_request());
adm_request &req = m_admRequestQueue.back();
req.address = m_burstReqAddress;
req.command = tlm::TLM_READ_COMMAND;
//call to min function
req.readLen = std::min(m_burstReqBeatsRemain * sizeof(Td), m_dramRowSize);
}
m_burstReqBeatsRemain--;
m_burstReqAddress += sizeof(Td);
m_ocpTxnQueue.push_back(m_ocpReq);
}
J'obtiens cette erreur:
no matching function for call to ‘min(long unsigned int&, unsigned int&)
from /usr/include/c++/4.6/bits/stl_algobase.h*
Remarque: avec ubuntu 12.04 32 bits fonctionne très bien
Aucune idée de comment je peux résoudre ce problème?
source d'informationauteur Will
Vous devez vous connecter pour publier un commentaire.
std::min
est un modèle de fonction surT
qui est le type de les deux paramètres de la fonction. Mais vous avez l'air de passer les arguments d'une fonction de type différent, et s'appuyer sur l'argument de modèle de déduction à partir des arguments de la fonction, ce qui n'est pas possible.Donc la solution est :
Soit ne pas s'appuyer sur l'argument de modèle de la déduction, au lieu de mentionner explicitement l'argument de modèle:
Ou de passer des arguments d'une fonction de même type: