Le brouillon de travail indique explicitement que les fonctions par défaut doivent être des fonctions membres spéciales (par exemple constructeur de copie, constructeur par défaut, etc., (§8.4.2.1-1)). Ce qui est parfaitement logique.Une fonction peut-elle être une fonction supprimée?
Cependant, je ne vois pas une telle restriction sur fonctions supprimées (§8.4.3). Est-ce correct?
Ou en d'autres termes sont ces trois exemples valides c++0
?
struct Foo
{
// 1
int bar(int) = delete;
};
// 2
int baz(int) = delete;
template< typename T >
int boo(T t);
// 3
template<>
int boo<int>(int t) = delete;
Qu'est-ce qu'une fonction supprimée? – Puppy
Une fonction supprimée est une fonction qui aurait existé si elle n'avait pas été supprimée. Par exemple. vous pouvez supprimer la copie de classe ctor. Ceci est légèrement supérieur à la rendre privée non mise en œuvre, pour deux raisons. 1. il est plus évident en lisant le code et 2. vous pouvez obtenir un message d'erreur plus clair. – MSalters
@MSalters: Vous pouvez également supprimer des fonctions qui n'existent pas, empêchant leur utilisation. Par exemple. donné 'void f (double); void f (int) = delete; ', f (42) est maintenant une erreur plutôt que d'utiliser une conversion implicite. –