Inutilisés paramètre en c++11

En c++03 et plus tôt pour désactiver l'avertissement du compilateur sur inutilisé paramètre j'ai l'habitude d'utiliser ce type de code:

#define UNUSED(expr) do { (void)(expr); } while (0)

Par exemple

int main(int argc, char *argv[])
{
    UNUSED(argc);
    UNUSED(argv);

    return 0;
}

Mais les macros ne sont pas les meilleures pratiques pour le c++, donc.
N'importe quelle meilleure solution apparaissent avec c++11? Je veux dire que je peux me débarasser des macros?

Merci pour tout!

  • Assurez-vous. Désactiver l'avertissement.
  • Non! Ne pas le faire!
  • Comment beaucoup mieux, c'est que la macro que de l'élargir inline? (void)argc; est plus court et plus clair que UNUSED(argc);
  • J'aime unused(argc, argv) avec template<class... T> void unused(T&&...){}. Clair, concis, et sans macros.
  • oh non les macros doivent pas utiliser les macros
  • Si un paramètre n'est pas utilisé, pourquoi est-il là en premier lieu?
  • Parfois, vous avez besoin pour se conformer à une certaine interface (par exemple lors du remplacement d'une fonction virtuelle ou en programmation générique).
  • s/sometimes/most of the time/
  • mais vous pouvez laisser sans nom de l'argument, ou même juste un commentaire, c'est le nom. void foo(int /*unused_arg*/, int used_arg)
  • Qui ne peut pas être fait pour "peut-être" utilisé des arguments, par exemple, conditionnel à l'inclusion où une branche besoin de l'argumentation et de l'autre branche n'a pas. Les envelopper également dans #ifdef est trop verbeux. Il n'y aurait [[maybe_unused]] en C++17, mais il arrive trop tard.
  • C'est pas tout à fait idéal, car "inutilisé" peut indiquer de travailler non seulement sur des arguments, mais aussi des expressions. J'utilise cette construction pour exprimer explicitement prévu séquencé d'évaluation sur la non-void expressions. Otoh, que, "non utilisé" est utilisé plus généralement, mise en œuvre de coulée à vide.
  • C'est assez proche de ce que j'utilise mais j'ai récemment trouver il ne peut pas travailler pour le paramètre packs. C'est pourquoi je recherche pour la réponse et vient ici. Malheureusement je n'arrive toujours pas à trouver une solution portable idéale.
  • Vous ne devriez pas donner de réponse à votre question. Il est injuste wrt qui répond à votre question.

InformationsquelleAutor inkooboo | 2013-04-02