Fed*_*dor 6 c++ visual-c++ compiler-bug
我几乎可以肯定以下是 Visual Studio 编译器的错误,但很难相信我决定在这里仔细检查:
struct A {
constexpr virtual int f() { return 0; }
};
struct B : A {
constexpr auto f() { return 1.1; }
};
constexpr int g() {
B b;
A & a = b;
return a.f();
}
static_assert( g() != 1 );
static_assert( g() == 1.1 );
Run Code Online (Sandbox Code Playgroud)
g()声明为返回int类型的函数通过编译时检查g() == 1.1意味着g()实际上返回一个double值。此行为在最新的 MSVC 编译器中可以重现,在线演示: https: //gcc.godbolt.org/z/6sGET7773
由于B::f()声明不能包含auto返回类型,程序是否存在格式错误?
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |