gpt4 book ai didi

c++ - 如果只有属性的成员函数是 noexcept,如何声明 noexcept?

转载 作者:行者123 更新时间:2023-11-28 00:33:01 26 4
gpt4 key购买 nike

#include <vector>
class A
{
std::vector<int> vec;

void swap( A & other) noexcept(noexcept(vec.swap(other.vec)))
{
vec.swap(other.vec);
}

};

int main()
{
}

此代码可在 clang(3.4) 下编译,但不能在 gcc (4.7.1) 下编译。谁能告诉我我做错了什么?

编辑

gcc 错误信息是:

error: invalid use of incomplete type ‘class A’
error: forward declaration of ‘class A’

最佳答案

作为解决方法,您可以使用(适用于 gcc 4.7.1、gcc 4.8.1 和 clang 3.4):

void swap(A& other) noexcept(noexcept(std::declval<decltype(A::vec)&>().swap(std::declval<decltype(A::vec)&>())))

void swap(A& other) noexcept(noexcept(vec.swap(vec)))

我认为问题是other.vec...

关于c++ - 如果只有属性的成员函数是 noexcept,如何声明 noexcept?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22115944/

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