L'esempio è effettivamente corretto. A partire dalla versione -
Microsoft Visual Studio 2005
Version 8.0.50727.867 (vsvista.050727-8600)
...
Visual C++ 77626-009-0000007-41722
- che include SP1, l'aggiornamento rapido Vista e alcuni degli aggiornamenti rapidi biblioteca - la funzione di cui sopra
template <size_t size>
int _snprintf_s(
char (&buffer)[size],
size_t count,
const char *format [,
argument] ...
);
ancora è buggy. Tuttavia, ciò che è veramente affascinante è che solo questa funzione delle 4 funzioni variante
- OK:
int _snprintf_s(char *buffer, size_t sizeOfBuffer, size_t count, :::
- Buggy:
template <size_t size> int _snprintf_s(char (&buffer)[size], size_t count, :::
- OK:
int _snwprintf_s
(versione carattere di larghezza)
- OK:
template <size_t size> int _snwprintf_s
(sì, la versione wide character è OK)
è bacato, cioè se si sta utilizzando il non-templa la versione te è OK, e se si sta usando una delle versioni di caratteri wide va bene anche questo. Stupefacente.
fonte
2012-10-25 18:10:50
Bella scoperta, sembrerebbe. –
Ouch! È imbarazzante. – bobince