1
鑑於專業的codecvt:鏈接錯誤時第三模板參數不標準::的mbstate_t
#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);
}
接頭與所述消息
[虛函數表爲標準::的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
,編譯工作還需要哪些專業化?
因此,我不必專注於'codecvt',我必須從'codecvt_base'開始一路? –
moshbear
我檢查'codecvt'的基類,它們是'codecvt_base'和'facet',並且發現它們都不是模板。所以你不需要改變它們。 – fefe
也許我應該打開一個libstdC++ bugreport,以便cvt通用模板具有'return noconv'存根,而不僅僅是原型。 – moshbear