如何在STL中实现交换功能?它是这么简单:
template<typename T> void swap(T& t1, T& t2) {
T tmp(t1);
t1=t2;
t2=tmp;
}
Run Code Online (Sandbox Code Playgroud)
在其他帖子中,他们谈论为您自己的班级专门化这个功能.我为什么要这样做?为什么我不能使用这个std::swap功能?
我已经对一些C++代码做了一些重构,并发现了许多我不知道的隐式转换引起的错误.
struct A *a();
bool b() {
return a();
}
void c() {
int64_t const d(b());
}
Run Code Online (Sandbox Code Playgroud)
b,返回类型a静默地转换为bool.c,返回的值b被静默提升为int64_t.如何在原始类型之间隐式转换时收到警告或错误?
-Wconversion似乎只能获得与上述示例无关的几个任意转换.BOOST_STRONG_TYPEDEF 不是一个选项(我的类型需要是POD,因为它们在磁盘结构中使用).