template<class C, class F>
auto test(C c, F f) -> decltype((void)(c.*f)(), void()) { }
逗号表达返回最右边的类型
You are looking at , which is an operator in C++ (comma operator). See row 16
Its declaration may looks like this: T2& operator,(const T& a, T2& b);
So a, b, c is evaluate as ((a,b),c), (b,c), (c), which returns a reference to the return type of c (a, b, c can be expressions)
In your case 1, i returns a reference to the last term, i. Hence the type is int&, so decltype(1, i) var = i; becomes int& var = i;
(i) is an expression, and it has return value which is a reference to i (int&)
本文详细解析了C++中的逗号运算符的工作原理及其使用方式。通过具体实例展示了逗号运算符如何评估表达式并返回最后一个项的引用。
1033





