Przykład jest poprawny. Począwszy od wersji -
Microsoft Visual Studio 2005
Version 8.0.50727.867 (vsvista.050727-8600)
...
Visual C++ 77626-009-0000007-41722
- który obejmuje SP1, Vista i poprawki kilka poprawek biblioteka - wyżej wymienionych funkcji
template <size_t size>
int _snprintf_s(
char (&buffer)[size],
size_t count,
const char *format [,
argument] ...
);
nadal jest wadliwy. Jednak to, co jest naprawdę fascynujące jest to, że tylko ta funkcja z 4 funkcjami wariantowych
- 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
(szeroki wersja znaków)
- OK:
template <size_t size> int _snwprintf_s
(tak, wersja z szeroką literą jest w porządku)
jest buggy, czyli jeśli używa się nie-templa ta wersja jest w porządku, a jeśli używasz jednej z szerokich wersji znaków, to też jest OK. Niesamowity.
Ładne znalezisko, mogłoby się wydawać. –
Ouch! To kłopotliwe. – bobince