wstring in namespace 'std' does not name a type

0

Mam taki kawałek kodu:

#ifndef STRING_H
#define STRING_H

#include "exports.h"
#include "ie_types.h"

#include <cstring>
#include <string>

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#ifndef WIN32
# define stricmp strcasecmp
# define strnicmp strncasecmp
#endif

#define WHITESPACE_STRING L"\n\t\r "

namespace GemRB {

typedef std::wstring String;

...

W g++ 5.4.0 kompiluje się poprawnie, natomiast g++ 8.3.0 wyrzuca dla linii "typedef std::wstring String;" komunikat jak w temacie. O co chodzi?

0

Jak w komentarzu powyżej, dodam, że u mnie pod g++-8 wersja: 8.3.0, typedef std::wstring String się kompiluje.

0

spróbuj tak

typedef typename std::wstring String;

albo tak:

using String = std::wstring;

tylko właściwie po co chcesz to robić?

2

Sprawdź czy któryś z innych, wcześniejszych nagłówków nie definiuje czegoś podobnego. I sprawdź ::std::wstring, może masz namespace std w GemRB

1

Dzięki wielkie za sugestie, ale tak sobie jeszcze uświadomiłem, że może chodzić o coś innego. Nie wspomniałem ( gdyż jak wychodzi błędnie, z góry uznałem że owe środowiska gcc muszą być równoważne ) że g++ 5.4.0 było natywne natomiast 8.3.0 to cross-compiler na pewną dość egzotyczną platformę i to może on po prostu nie ma zaimplementowanego wstring'a. Napisałem wczoraj do jednego z współautorów owego cross-compilator'a pytanie czy wstring jest zaimplementowany i odpisał mi, że nie pamięta i musi to sprawdzić, ale to bardzo możliwe, że wstring nie został zaimplementowany w tym środowsku. Czekam więc na wynik sprawdzenia, ale wychodzi na to, że to właśnie dlatego dostaję wspomniany komunikat.

0

Jeśli faktycznie jest to jakaś małą platforma typu Arduino to zwykle nie ma pełnego wsparcia standardowej biblioteki C++, a std::wstring na takim urządzeniu to zdecydowanie overkill.

0

Z wstring/wchar to w ogóle warto uważać... Pamiętam czasy, gdy Google postanowiło "oduczyć" programistów korzystania z wchar i w Androidowym NDK dało
typedef char wchar; (lub coś w tym stylu)
Dawno to było i już nieprawda, ale swego czasu troszkę mnie pracy kosztowało ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1