Le constructeur de déplacement de la classe contenant uniquement std :: map mobile ne fonctionne pas

Klaus

J'ai une classe contenant un std::map<int, std::mutex>et je ne suis pas en mesure de définir un constructeur de déplacement pour cela. std::mutexn'est ni copiable ni déplaçable mais le constructeur de déplacement de std::mapfonctionne toujours car il ne nécessite pas que son type soit copiable ou déplaçable:

std::map<int, std::mutex> map1;
std::map<int, std::mutex> map2{std::move(map1)}; //this compiles without warnings

Mais alors j'ai une classe contenant une telle carte:

class OnlyMovable{
  std::map<int, std::mutex> map;
public:
  OnlyMovable(const OnlyMovable&& om) : map{std::move(om.map)} //somehow requires copy-ctor of mutex
  {}
};

Ici, gcc me donne un énorme message d'erreur qui se termine par une plainte qui std::mutexn'a pas de constructeur de copie.

Alors, où le constructeur de mouvement de cette classe appelle-t-il le constructeur de copie de std :: mutex et comment est-ce évitable?

PS: Je sais que cette classe n'a aucun sens mais c'est juste un simple exemple vérifiable dérivé de ma classe actuelle.

Igor Tandetnik

Votre constructeur de déplacement supposé prend une constréférence rvalue. omne peut pas être modifié, ce qui signifie que ses membres ne peuvent pas être déplacés. Laissez tomberconst

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Kotlin: Le constructeur de la classe interne ne peut être appelé qu'avec le récepteur de la classe contenant

pourquoi le constructeur de déplacement / l'assignation de déplacement ne sont pas implicitement déclarés et définis comme supprimés si nous définissons uniquement le constructeur de copie / oper =?

Laravel ne peut pas définir la variable de classe dans le constructeur

Le constructeur std :: unordered_map avec initializer_list et size se compile dans main, mais pas dans la définition de classe

Le compilateur ne lançant pas d'erreur pour le constructeur de la classe a une erreur de syntaxe

Le constructeur de copie de la classe de base ne doit pas être appelé

la nouvelle propriété ne peut pas être instanciée dans le constructeur de classe dérivée

Le constructeur Hilt ViewModel ne fonctionne pas lorsque la portée du composant de navigation

Le constructeur de copie pour la liste liée aux classes ne fonctionne pas

La déduction des arguments du modèle de classe ne fonctionne pas avec le modèle d'alias

le constructeur de la classe dérivée ne peut pas être constexpr si la classe de base contient un membre du tableau

comment afficher uniquement le nom de fichier lorsque la coupe cmd ne fonctionne pas?

Le changement de couleur CSS sur la barre de navigation ne fonctionne pas avec la classe

Le bouton de fermeture de la fenêtre contextuelle mobile jquery ne fonctionne pas toujours

Le dépassement de la table HTML ne fonctionne pas

Le typage implicite ne fonctionne pas pour la classe de modèle

Le filtre d'entrée de base de la directive personnalisée angulaire ne fonctionne pas correctement, affiche uniquement la première instance de correspondance

Le remplacement de la classe active à l'aide de JavaScript ne fonctionne pas correctement

Le destructeur par défaut dans la classe de base désactive le constructeur de déplacement dans la classe enfant s'il y a un membre

la définition de la méthode de la classe javascript ne fonctionne pas - réagir

Le constructeur de déplacement n'est pas appelé lors de la levée d'une exception

La directive de changement de classe angulaire ne fonctionne pas

Création d'une classe matricielle avec std::vector, comment définir la taille de std::vector dans le constructeur ?

Eclipse CDT ne peut pas résoudre std :: vector de la classe de modèle

Le test d'une méthode de classe de module ruby ne fonctionne pas

startActivity ne fonctionne pas après le changement de classe

emballage avant ne fonctionne pas dans la classe de modèle

La montre Vue Prop ne fonctionne pas dans le composant de style classe

Le déplacement d'un fichier à l'aide d'AppleScript ne fonctionne pas après la modification du nom de fichier

TOP Lista

CalienteEtiquetas

Archivo