这个编译错误是typepedef int (*j)() throw(A)吗?
Is this compile error typedef int (*j)() throw(A)?
#include <iostream>
class A {};
typedef int (*j)() throw(A);
int f()
{
std::cout << "function f" << std::endl;
return 0;
}
int main()
{
j y = f;
y();
}
在所有的站点和Stroustrup也说会有编译错误,但它编译。标准有什么变化吗?
我知道这不是这个问题的答案-
MSVC 2010(我有)没有抛出错误,编译良好,工作没有打嗝
g++ (GNU)说error: 'j' declared with an exception specification
Clang说error: exception specifications are not allowed in typedefs
底线:MSVC中的编译器错误
异常说明不是函数类型的一部分。例如,你不能让他们负担过重;而且指向函数的指针不携带异常说明。正如@Aniket所说,这是微软的一个bug,他们的编译器接受了这个声明。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- C++ sendto() 给出"invalid conversion from ‘int (*)(int, int, int)throw ()’ to ‘int’"错误
- 我该怎么做 throw 来处理 C++ 中的错误数据类型
- 错误:“char(CharStack::)()const throw(CharStack:Underflow)”类型的参
- 使用Throw和Catch的未处理异常运行时错误
- 错误 C2084:函数'float cbrt(float) throw()'已具有主体
- 这个编译错误是typepedef int (*j)() throw(A)吗?
- Crashlytics Fabric错误地处理了从32位平台上的swift ios调用的throw std::异常