Je reprends une discussion qui était au mauvais endroit : les exercices
Citation : Goten
Citation : lmghs
gcc 4.6 me file des messages d'erreurs peu clairs ici.
Je peux appeler extent directement en jouant avec decltype.
Ensuite, je n'ai pas souvenir que T& puisse matcher un tableau statique dans une fonction template. Je dirais que le problème vient de là.
Concernant la première fonction, gcc me la refuse comme constante par contre
Au fait std::extent fait exactement ça. (je l'avais loupé celui là). Pas besoin d'essayer de la jouer clever :
template <typename T>void foo(const T& t)
{
std::cout << std::extent<T>::value;
}
int main()
{
int tab[10];
foo(tab);
}
Bien entendu il renvoie une std::integral_constant donc ::value est aussi une constexpr.
Citation : lmghs
OK. Je vois. Le problème arrive quand le tableau est une variable membre.
Hum, t'as un snippet? Je vois pas de raison immédiate pour que ça marche pas.
extent fais ça, mais il est franchement à rallonge, et il semblerait que l'on ne puisse pas passer un tableau statique en paramètre d'une fonction template sans sortir les super signatures, et donc lever l'intérêt d'extent.
(merci pour le nouveau thread, j'ai voulu le faire lors de mes 3 dernier post mais je suis trop faignant)
Citation : lmghs
extent fais ça, mais il est franchement à rallonge, et il semblerait que l'on ne puisse pas passer un tableau statique en paramètre d'une fonction template sans sortir les super signatures, et donc lever l'intérêt d'extent.
hum, statique static ou statique par opposition à dynamique ?
Tout à fait, c'est une typo.
decltype+extent marche très bien, je suis d'accord.
Seulement, on se retrouve avec une expression non encapsulée (il est beau le "::value") et très complexe à vendre à ceux qui ne développent pas des bibliothèques templates.
@equinoxe, je parlais d'un code comme celui de goten, ou le vieux hack du array_size que j'utilise encore pour l'instant.
@goten, c'est exactement ce que j'aurais voulu sauf que mon gcc 4.6 me refusait ce code : bound ne matchait pas le tableau que je lui passais. Tu m'as mis un doute, je re-testerai demain sur le bon compilo.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.