Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当值为非常量但使用常量表达式初始化时,是否使用constexpr?_C++_C++11_Constexpr - Fatal编程技术网

C++ 当值为非常量但使用常量表达式初始化时,是否使用constexpr?

C++ 当值为非常量但使用常量表达式初始化时,是否使用constexpr?,c++,c++11,constexpr,C++,C++11,Constexpr,由于某些原因,我很难掌握如何正确使用constexpr 标题中描述的情况是否适合使用?i、 e: void foo() { static constexpr const size_t MAX_BUFFER_SIZE = 20 * 1024 * 1024; constexpr size_t bufferSize = 1024 * 1024; // Initialized with constant expression std::vector<char> bu

由于某些原因,我很难掌握如何正确使用
constexpr

标题中描述的情况是否适合使用?i、 e:

void foo()
{
    static constexpr const size_t MAX_BUFFER_SIZE = 20 * 1024 * 1024;

    constexpr size_t bufferSize = 1024 * 1024; // Initialized with constant expression
    std::vector<char> buffer(bufferSize, ' ');

    //...

    if (some_condition())
    {
        bufferSize = get_random_value_at_runtime(); // Assigned a new 'non-constexpr' value
        buffer.resize(bufferSize, ' ');
    }

    //...   
}
void foo()
{
静态constexpr const size\u t MAX\u BUFFER\u size=20*1024*1024;
constexpr size\u t bufferSize=1024*1024;//用常量表达式初始化
标准::向量缓冲区(缓冲区大小,”);
//...
if(某些条件())
{
bufferSize=get_random_value_at_runtime();//分配了一个新的“non-constexpr”值
buffer.resize(bufferSize',);
}
//...   
}
亲切的问候

标题中描述的情况是否适合使用

constexpr size_t bufferSize = 1024 * 1024; // Initialized with constant expression

// ...

    bufferSize = get_random_value_at_runtime(); 
constexpr
意味着(也是)
const


您不能重新分配
const
变量。

有趣的是,阅读中的答案让我觉得它们彼此完全独立。@notanalien在您的链接答案中,我什么时候可以/应该同时使用const和constexpr?A.在对象声明中。当两个关键字都引用要声明的相同对象时,这是不必要的。constexpr意味着const。这与max66所说的相同。@notanalien-当它们用于结构/类的方法(成员函数)时,它们可以是独立的,但只能从C++14开始;在C++11中,constexpr方法也是
const
。无论如何,一个
constepr
变量(也是C++14和C++17)也是
const