当第三个模板参数不是std::mbstate_t时,专门处理codecvt:链接器错误
Specializing codecvt: linker errors when third template argument is not std::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);
}
链接器随消息而死亡
[vtable for 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*,char*&const"的引用,对所有do_*成员函数重复。
当StateT不是std::mbstate_t
时,编译还需要哪些专业化才能工作?
除了标准要求的两个专门化:codecvt<wchar_t, char, mbstat_t>
和codecvt<char, char, mbstate_t>
之外,codecvt
很可能从未实现。很难有一个进行编码转换的通用方法。因此,如果您想使用自己的模板专业化,您可能必须自己实现codecvt
的每个函数(可能包括它的基类(。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'