为什么枚举值不能用作右值?

时间:2016-01-29 13:26:36

标签: c++ c++11 enums move rvalue

注意:

问题已经解决了。这是Clion 1.2.4不是编译器的错误。即使Clion的静态分析工具仍然给我一个错误,我也可以编译应用程序。

当我尝试使用Clion 1.2.4函数创建一个C++对象时,我正在使用C++11构建基于make_shared的{​​{1}}项目:

shared_ptr

其中auto item = std::make_shared<Type>(EnumType::Value); 是一个带有如下构造函数的结构:

Type

,构造函数的参数是枚举类型。

但Clion给我一个错误

Type(EnumType t = defaultValue) { }

所以我想知道枚举值是否可以用作调用函数的右值?为什么呢。

如果我这样使用:

parameter type mismatch: Expression must be rvalue.

Clion不会显示错误。 auto item = std::make_shared<Type>(std::move(EnumType::Value)); 函数的作用是什么?使用常量值作为move函数的实际参数是否正确。

更新2016-01-31:

感谢@ NathanOliver提醒。一个简单的例子可以是here(由NathanOliver创建)。

以下是命令move的结果:

gcc -v

0 个答案:

没有答案