gpt4 book ai didi

c++ - 类型转换对的 g++ 警告选项?

转载 作者:可可西里 更新时间:2023-11-01 17:57:09 24 4
gpt4 key购买 nike

我刚刚发现 C++ 不会对从 pair<double, int> 进行转换给出任何警告至 pair<int, int> ,这有点令人惊讶。这是我的程序 test_pair.cpp :

#include <vector>
#include <utility>
using namespace std;


int main()
{
std::vector<pair<int, int> > v;
pair<double, int> p = make_pair(3.8, 3);
v.push_back(p);
}

我使用 g++ test_type.cpp -Wall -Wconversion 编译它,但仍然没有生成警告。我正在使用 g++ v4.6.1。任何人都知道如何让 g++ 为此生成警告,或者它无法完成?

最佳答案

对(和元组)几乎可以从任何适合的东西中构造出来。特别是,每个元素都可以从任何可以隐式转换为它的东西构造。基本上,它“做你所期望的”。 pair 具有如下所示的构造函数模板:

template <typename U, typename V>
pair(U && u, V && v) : first(std::forward<U>(u)), second(std::forward<V>(v))
{ }

但是,您应该只说:

v.emplace_back(3.8, 3);

关于c++ - 类型转换对的 g++ 警告选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9942360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com