c++ - 右值引用参数的正确默认值是多少?

标签 c++ c++11 default-value move-semantics icc

假设我有一个接受右值参数的函数并且我想提供一个默认值,我该如何正确指定它?以下适用于 gcc 4.7.0,但失败 使用 icpc 13.0.1。

struct data {
  int _data[10];
  data() = default;
  data(data&&) = default;
  data(const data&) = default;
};
void func(data&& = data{});

icpc 提示说

error: type name is not allowed
void func(data&& = data{});
                   ^

这是正确的吗?正确的语法是什么?

最佳答案

似乎 icpc 13.0.1 不支持默认参数中的通用初始化语法。这有效:

void func(data&& = data());
                       ^^ value-initialization

关于c++ - 右值引用参数的正确默认值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13534932/

相关文章:

c++ - flatbuffers schema 字段中标记的 'hash' 有什么用?

c++ - 在这种情况下如何使用 unique_ptr?

sql-server-2005 - SQL Server 2005 使用列默认值范围创建表

C++ 如何求解非常大的稀疏线性系统

c++ - 交换数组中的元素以反转数组

c++ - std::stringstream 的默认 `fill character` 是什么?

c++ -/usr/bin/ld : cannot find

c++ - 在 C++ 中对 std::atomic<bool> 使用比较和读/写操作?

Swift 4.2 在单个 if-let 中向下转换多个变量时合并

python - 如何根据先前的参数定义默认参数值?