gpt4 book ai didi

c++ - 为什么 std::pair 不可构造?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:27 26 4
gpt4 key购买 nike

以下代码:

#include <iostream>
#include <iomanip>
#include <string>
#include <utility>
using namespace std;

struct Foo
{
std::string s;
int i;
};

int main()
{
cout << boolalpha << is_nothrow_constructible<Foo>::value << endl;
cout << is_nothrow_constructible<pair<string, int>>::value << endl;

cout << is_nothrow_move_constructible<Foo>::value << endl;
cout << is_nothrow_move_constructible<pair<string, int>>::value << endl;

return 0;
}

使用 g++ -std=c++11 编译时产生以下输出:

true
false
true
true

为什么是std::pair<string, int>不能抛出构造,而Foo是,为什么它不可构造?

最佳答案

有趣的是,none of the constructors is declared noexcept under any conditions .可能是一个典型的标准缺陷(只有下面的文本描述 promise 如果没有元素抛出任何异常则不会抛出任何异常。)

关于c++ - 为什么 std::pair 不可构造?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50805937/

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