小编EmV*_*Vee的帖子

C++ 中的条件运算符 ( ? : ) 可以是编译时吗?

三元(条件)运算符可以用作类似于constexpr if()C++17 中引入的 , 吗?

我想为模板中的成员变量初始化添加一些条件。以下表达式会在编译时或运行时解析吗?如果是这样,是否有任何其他运算符可以在编译时解析,从而可以避免模板特化?

template<int a>
struct hello {
    constexpr static int n = (a != 0) ? 10 : 20;
}
Run Code Online (Sandbox Code Playgroud)

c++ conditional-operator compile-time-constant compile-time c++17

4
推荐指数
1
解决办法
306
查看次数

无法在类构造函数范围内初始化指针

在 c++ 17 中,当尝试通过非默认构造函数的范围(不在成员初始值设定项列表中)初始化成员指针时,将引发错误,如下所述:

error: expression cannot be used as a function

为什么这是无效的?我从错误中了解到指针已被隐式初始化,因此无法调用构造函数。我已经阅读了标准中的相关段落,但仍然不清楚,因为它指出它确实应该尚未初始化,因此我的代码应该是有效的。

class Container{
    private:
        int length;
        double* data;
    public:
        Container(): length(0), data(nullptr) {}

        Container(const int length): length(length) {data(nullptr)}
};

int main()
{
  Container a(2);
}
Run Code Online (Sandbox Code Playgroud)

c++ constructor initialization

1
推荐指数
1
解决办法
73
查看次数