Perché questa linea non si compila:funzionale C++ 11 strano comportamento
function<const int&(const int&, const int&)> min_ptr = min<int>;
Ma questo funziona bene:
const int &(*min_ptr)(const int&, const int&) = min<int>;
sembrerebbe che la classe funzione è la sostituzione flessibile e confortevole per la funzione puntatori. Ma perché questo caso non funziona?
MODIFICA. Il mio codice:
#include <functional>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
const int&(*min_ptr)(const int&, const int&) = min<int>; //It is works fine
function<const int&(const int &, const int&)> min_f = min<int>;// Doesn't compile
/*
Error message:
error: conversion from ‘<unresolved overloaded function type>’ to non-scalar type
‘std::function<const int&(const int&, const int&)>’ requested function<const int&(const int &, const int&)> min_f = min<int>;
*/
return 0;
}
gcc version 4.8.2, --std = C++ 11
Real program please, e veri messaggi di errore. Potrebbe essere semplice come manca 'std ::'. – MSalters
infatti, mi compila con 'using namespace std;' –
Compilatore, versione e flag? – Yakk