相关疑难解决方法(0)

标准库如何实现std :: swap?

如何在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++ templates swap

58
推荐指数
2
解决办法
2万
查看次数

C++隐式转换基元的警告或错误

我已经对一些C++代码做了一些重构,并发现了许多我不知道的隐式转换引起的错误.

struct A *a();

bool b() {
    return a();
}

void c() {
    int64_t const d(b());
}
Run Code Online (Sandbox Code Playgroud)

问题

  1. b,返回类型a静默地转换为bool.
  2. c,返回的值b被静默提升为int64_t.

如何在原始类型之间隐式转换时收到警告或错误

注意

  1. 使用-Wconversion似乎只能获得与上述示例无关的几个任意转换.
  2. BOOST_STRONG_TYPEDEF 不是一个选项(我的类型需要是POD,因为它们在磁盘结构中使用).
  3. C也很有意思,但是这个问题与C++代码库有关.

c++ gcc type-conversion implicit-conversion

18
推荐指数
1
解决办法
1万
查看次数