为什么static_assert在带有const参数的成员函数中不起作用?

Dim*_*red 2 c++

我目前正在玩,static_assert并且遇到了这个问题:

class A
{
public:
   void func( const int a ){
      static_assert( a == 3 );
   }
};
Run Code Online (Sandbox Code Playgroud)

给我:

error: non-constant condition for static assertion static_assert( a == 3 );

为什么是这样?我的是const。我可以想象该值将被强制转换为const,而以前是非const,那么应该会出现错误。但仅在成员函数内部,我不会期望任何错误。

我该如何解决?如果无法解决,我也很高兴得到一个答案,在这里有点好奇。

Seb*_*edl 7

中的表达式static_assert必须是编译时常量。一个const函数的参数仅仅是不可改变的,但在编译的时候不知道。