首页 > 解决方案 > 为什么 static_assert 在带有 const 参数的成员函数中不起作用?

问题描述

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

class A
{
public:
   void func( const int a ){
      static_assert( a == 3 );
   }
};

给我:

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

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

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

标签: c++

解决方案


a 中的表达式static_assert必须是编译时常量const函数参数只是不可变的,但在编译时不知道。


推荐阅读