Mi rendo conto che ci sono semantiche sottilmente diverse per alcune di queste, a causa dell'ADL.
In generale, però: quale preferire (se esiste) e perché?
(Oppure dipende dalla situazione (ad esempio intestazione in linea rispetto all'implementazione?)
Inoltre: dovrei preferire ::std::
oltre std::
?
using namespace std;
pair<string::const_iterator, string::const_iterator> f(const string &s)
{
return make_pair(s.begin(), s.end());
}
o
std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s)
{
return std::make_pair(s.begin(), s.end());
}
o
using std::pair;
using std::string;
pair<string::const_iterator, string::const_iterator> f(const string &s)
{
return make_pair(s.begin(), s.end());
}
o
std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s)
{
using std::make_pair;
return make_pair(s.begin(), s.end());
}
o
std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s)
{
using namespace std;
return make_pair(s.begin(), s.end());
}
o qualcos'altro?
(Questo presuppone che io non abbia C ++ 11 e auto
.)