【发布时间】:2023-03-22 23:06:02
【问题描述】:
自从我上次查看临时生命周期规则以来已经有一段时间了,我不记得成员右值引用如何影响 终生。
以下面两段代码为例:
int main()
{
std::get<0>(std::forward_as_tuple(
[](int v){ std::cout << v << std::endl; }
))(6);
return 0;
}
,
int main()
{
auto t = std::forward_as_tuple(
[](int v){ std::cout << v << std::endl; }
);
std::get<0>(t)(6);
return 0;
}
如果成员右值引用不影响生命周期规则,我希望第一个示例表现良好,而第二个示例 未定义(因为包含 lambda 对象的完整表达式 以第一个分号结束)。
C++11、C++14 和 C++17 如何处理给定的示例?三者有区别吗?
【问题讨论】:
标签: c++ c++11 c++14 language-lawyer c++17