#include "stdafx.h"
#include <iostream>
#include <vector>
#include <map>
template <typename T>
auto Copy(T c)
{
std::vector<decltype(c.begin()->first)> lc;
//Copying
return lc;
}
int main()
{
std::map<int, int> map;
Copy(map);
return 0;
}
Dans le code ci-dessus, je suis en train de déclarer un vector
du type de données de clés de map
mais je reçois l'erreur suivante -déclare un vecteur par decltype
"The C++ Standard forbids containers of const elements allocator<const T> is ill-formed."
Que pensez-vous du type de 'decltype (c.begin() -> en premier)' est, et pourquoi? – hvd
Il est peut-être plus simple d'utiliser 'typename T :: key_type' au lieu de' decltype (...) ', si vous savez que' T' aura toujours un membre 'key_type', comme' std :: map' ou ' std :: unordered_map'. –