gpt4 book ai didi

C++ noexcept 规范取决于数据成员

转载 作者:行者123 更新时间:2023-11-30 01:47:35 25 4
gpt4 key购买 nike

这个声明没问题:

void memberFunction(T& functor, double value)noexcept(noexcept(functor(value))); 

对于一个

template<class T> 
class MyClass{
public:
void memberFunction(T& functor, double value)noexcept(noexcept(functor(value)));
};

假设 MyClass 有一个仿函数数据成员:

template<class T> 
class MyClass{
public:
//ctor
...
void memberFunction(double value);
private:
T functor;
};

我想像在前一个案例中那样编写 noexcept 规范,我试过这个:

void memberFunction(double value)noexcept(noexcept(functor(value))); 

但是编译器告诉我仿函数不是作用域。由于类似的原因,以下内容不起作用:

void memberFunction(double value)noexcept(noexcept(this->functor(value))); 

下面的不能工作,因为我有一些用作 T 的类缺少默认构造函数:

void memberFunction(double value)noexcept(noexcept(T()(value))); 

以下语法错误:

void memberFunction(double value)noexcept(noexcept(T::operator(double))); 

尽管它形象地解释了我想要的东西。

有什么建议吗?目前我放弃了规范......

最佳答案

std::declval<T>()模拟右值 T实例。 std::declval<T&>()模拟左值 T实例。用这个代替 T() .

关于C++ noexcept 规范取决于数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31424852/

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