Vous pouvez utiliser des modèles pour trouver la longueur d'un tableau.Utilisation de modèles pour obtenir la taille et l'adresse de fin d'un tableau
template<typename T, size_t N>
size_t arraylen(T(&)[N])
{ return N; }
J'aimerais approfondir cette idée.
struct Foo
{
template< typename T, size_t N >
Foo(/* ??? */) : ptr(?), size(?) { }
char* ptr;
size_t size;
};
int main()
{
Foo foo("test");
const char bar[] = "test2";
Foo foo2(bar);
const char* baz = bar;
Foo foo3(baz); // compiler error.
}
Cependant, pour la vie de moi je ne peux pas obtenir la syntaxe pour compiler. Je pense qu'une partie de ce qui me manque est que je ne comprends pas vraiment ce que le T(&)[N]
signifie.
Que signifie T(&)[N]
?
Comment puis-je autoriser l'accès à l'adresse de la baie tout en saisissant sa taille avec des modèles?
J'aurais dû changer le titre. Je n'ai pas mentionné le temps de compilation dans la question du tout. Je veux aussi que l'exemple 'baz' échoue. –