Quel est le point de const void?

Apparemment, il est possible de déclarer une fonction retournant const void:

const void foo()
{
}

g++, on semble considérer le const important, parce que le code suivant ne compile pas:

#include <type_traits>

static_assert(std::is_same<void(), const void()>::value, "const matters");

Donc ne const void ont aucune signification pratique?

  • Sans connaître les détails, je dirais qu'il est là pour orthogonalité des raisons. Imaginez une méta-fonction qui prend l'remplace le type, mais pas à la qualification. Il serait de travailler avec tous les types, à l'exception de nullité si le vide peut implicitement être enlevée.
  • Je suis maintenant curieux en ce qui a mené à cette découverte. 🙂 En jouant avec votre compilateur intermédiaire de la sortie, en sommes-nous?
  • J'étais en train de décider où placer les const dans un pointeur de fonction tableau de recherche. Il y avait trois emplacements possibles. L'un d'eux réussi à compiler, et ultrapériphériques const clairement déclaré un tableau de pointeurs de fonctions retournant const void, et j'ai été surpris que le compilateur a accepté le code.
  • cdecl.org est utile pour ces quelques moments de demander "qu'est-ce qualificatif s'applique à?"
InformationsquelleAutor fredoverflow | 2011-02-20