MSVC 在前向类模板声明中阻塞

Naz*_*nho 7 c++ templates visual-c++

MSVC 无法编译

#include <iostream>

template<int N, int = N>
struct A;

template<int, int V>
struct A{static constexpr int VALUE = V;};

int main() {
  A<1> a;
  std::cout << a.VALUE;
}
Run Code Online (Sandbox Code Playgroud)

(3): error C2065: 'N': unknown identifier (10): error C2975: 'V': invalid template argument 'A', constant expression expected(粗略翻译)。

clang默默地编译它。

那么问题来了:烂代码还是疯狂的 MSVC?

MSVC版本= VS 2019

Fed*_*dor 1

这是 MSVC 中的一个错误,在编译器版本 19.22 之前出现,并在 19.23 中修复。演示: https: //gcc.godbolt.org/z/occvKEfc3