Bro*_*thy 1 c++ constexpr c++14 c++17
我想创建一个 constexpr param 结构。它的几个成员将由 constexpr 函数计算。喜欢:
class Params {
public:
static constexpr size_t featureWinW{ 7 };
static constexpr size_t featureWinH{ 7 };
private:
static constexpr size_t getKernelSize()
{
//complex calculation
return 20;
}
public:
static constexpr size_t kernelSize{ getKernelSize() };
}
Run Code Online (Sandbox Code Playgroud)
我知道 getKernelSize 就像是在类外部定义的,所以代码是错误的:
error: ‘static constexpr size_t Params::getKernelSize()’ called in a constant expression before its definition is complete
Run Code Online (Sandbox Code Playgroud)
我应该如何重新格式化我的代码以使其有效,即使是具有类似私有计算函数的专用命名空间也不会产生垃圾邮件?
可以考虑使用 Lambda:
class Params {
public:
static constexpr std::size_t featureWinW{ 7 };
static constexpr std::size_t featureWinH{ 7 };
static constexpr std::size_t kernelSize{
[](){
//complex calculation
return 20;
}(); // immediately called.
};
};
Run Code Online (Sandbox Code Playgroud)