【问题标题】:what's the correct default value for an r-value reference argument?r 值引用参数的正确默认值是多少?
【发布时间】:2012-11-23 19:42:21
【问题描述】:

假设我有一个接受 r 值参数的函数并且我想提供一个默认值,我该如何正确指定它?以下适用于 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支持通用初始化语法吗?你试过值初始化器data && = data()吗?
  • @ecatmur 确实有效。所以这似乎是一个英特尔问题。版本 13.0.1 应该与 gcc 4.7.0 兼容,但事实并非如此!

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2018-11-19
    • 2020-02-07
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    相关资源
    最近更新 更多