相关疑难解决方法(0)

从函数返回时auto和decltype(auto)有什么区别?

我很少看到,decltype(auto)但是当我这样做时,它会让我感到困惑,因为它似乎与auto从函数返回时一样.

auto g() { return expr; }
decltype(auto) g() { return expr; }
Run Code Online (Sandbox Code Playgroud)

这两种语法有什么区别?

c++ c++14

42
推荐指数
2
解决办法
4893
查看次数

使用C++尾随返回类型时auto的含义是什么?

而不是平常

void foo (void ) {
    cout << "Meaning of life: " << 42 << endl;
}
Run Code Online (Sandbox Code Playgroud)

C++11 允许是另一种选择,使用追踪回报

auto bar (void) -> void {
    cout << "More meaning: " << 43 << endl;
}
Run Code Online (Sandbox Code Playgroud)

在后者 - 什么是auto代表?

另一个例子,考虑功能

auto func (int i) -> int (*)[10] {

}
Run Code Online (Sandbox Code Playgroud)

同样的问题,auto这个例子中的含义是什么?

c++ c++11

12
推荐指数
2
解决办法
8696
查看次数

trailing-return-type中的占位符是否会覆盖初始占位符?

克++出现接受的任何组合autodecltype(auto)作为初始和结尾返回类型:

int a;
auto f() { return (a); }                             // int
auto g() -> auto { return (a); }                     // int
auto h() -> decltype(auto) { return (a); }           // int&
decltype(auto) i() { return (a); }                   // int&
decltype(auto) j() -> auto { return (a); }           // int
decltype(auto) k() -> decltype(auto) { return (a); } // int&
Run Code Online (Sandbox Code Playgroud)

但是,clang拒绝j并且k说:error:具有尾随返回类型的函数必须指定返回类型'auto',而不是'decltype(auto)'(演示).

哪个编译器正确?在每种情况下应该使用哪个规则(autodecltype(auto))?在尾随返回类型中使用占位符类型是否有意义?

c++ decltype trailing-return-type return-type-deduction c++14

6
推荐指数
1
解决办法
348
查看次数

decltype(auto)是否会使尾随的返回类型过时?

已经有很多很多很多关于这些问题和答案尾随返回类型auto返回类型推演和非常有益的decltype(auto)。但我没能找到答案是否尾随返回类型,需要在所有的,因为我们有decltype(auto)。是否存在尾迹返回类型可以解决的情况,decltype(auto)要么无法使用,要么不起作用(给出意外的/错误的结果),并且首先需要尾迹返回类型?

c++ trailing-return-type c++17 c++20 decltype-auto

3
推荐指数
2
解决办法
166
查看次数