如何在类内定义constexpr函数?
我有类,我想将const int数组定义为变量,因此我需要constexpr函数,但是我无法弄清楚为什么当函数为类成员时我的代码不编译。它仅在功能不在类外面时进行编译。
这是我的代码:
#include <stdint.h>
template<int T>
class Test
{
constexpr uint32_t pow(uint32_t a, uint32_t b)
{
uint32_t c = 1;
for (int i = 0; i < b; i++)
c *= a;
return c;
}
float arr[pow(2, T)][T];
}
int main()
{
Test<4> test_class;
return 0;
}
I have class and i want to define const int array as variable, so i need constexpr function but i cannot figure out why my code does not compiles when the function is class member. It only compiles when the function is outside the class.
Here is my code:
#include <stdint.h>
template<int T>
class Test
{
constexpr uint32_t pow(uint32_t a, uint32_t b)
{
uint32_t c = 1;
for (int i = 0; i < b; i++)
c *= a;
return c;
}
float arr[pow(2, T)][T];
}
int main()
{
Test<4> test_class;
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
阵列的大小必须在编译时已知。
由于
POW
是一种非静态方法,因此必须具有此
对象才能调用它,并且在编译时没有。如果将其更改为静态方法,它将起作用:
The size of the array has to be known at compile time.
Since
pow
is a non static method you must have athis
object in order to call it, and there is none at compile time.If you change it to a static method it will work: