С учетом
#include <locale>
struct Q;
struct R{ void operator()(Q*) { } };
class S : public std::codecvt<char, char, Q*> { } ;
int main() {
char *p;
char *q;
const char *r;
char *s;
char *t;
char *u;
Q* _q;
std::use_facet<std::codecvt<char, char, Q*> >(std::locale(std::locale::classic(), new S)).in(_q, p, q, r, s, t, u);
}
Линкер умирает с сообщениями
[vtable для std :: codecvt] + 0x50): неопределенная ссылка на 'std :: codecvt :: do_max_length () const', повторяется для всех членов codecvt do_ *,
и
[vtable for S] + 0x20): неопределенная ссылка на 'std :: codecvt :: do_out (Q * &, char const *, char const *, char const * &, char *, char *, char * & ) const ', повторяется для всех функций-членов do_ *.
Когда StateT не std::mbstate_t
, какие специализации необходимы для работы компиляции?