L'exemple suivant illustre ma question:Nom problème de recherche dans le type de fuite de retour
#include <iostream>
#include <string>
template <typename T>
auto func(const T& x) -> decltype(to_string(x)) {
using std::to_string;
return to_string(x);
}
int main() {
std::cout << func(1);
}
Je ne veux pas importer std::to_string
dans l'espace de noms global, pas ce que je veux utiliser -> decltype(std::to_string(x))
comme faisant cela désactive ADL. Évidemment, vous ne pouvez pas mettre using std::to_string
au sein de decltype
. Alors, comment dois-je faire?
Vous avez C++ 14 dans les balises. Si vous utilisez C++ 14, vous n'avez pas besoin du type de retour final. Laissez simplement 'auto'. –
@Revolver_Ocelot Cela désactivera SFINAE, et si SFINAE n'est pas nécessaire, (dans ce cas précis) on peut simplement utiliser 'std :: string' comme type de retour. – cpplearner