#proposals #wg21
https://herbsutter.com/2023/11/11/trip-report-autumn-iso-c-standards-meeting-kona-hi-usa/
Чуть больше, чем неделю назад, появились первые трип-репорты с недавней встречи WG21 (Комитет по стандартизации C++) в Коне
По ее итогам в C++26 вошли:
1. Возможность обращения к parameter pack'ам как к массивам ( https://wg21.link/p2662r3)
template
constexpr auto first_plus_last(T... values) -> T...[0] {
return T...[0](values...[0] + values...[sizeof...(values)-1]);
}
int main() {
static_assert( first_plus_last(1, 2, 10) == 11 );
}
2. Огромное количество функций линейной алгебры в стиле фортрановского https://en.m.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms, ( https://wg21.link/p1673r13)
template
void cholesky_solve(InMat A, Triangle t, InVec b, OutVec x)
{
using std::linalg::explicit_diagonal, std::linalg::transposed, std::linalg::triangular_matrix_vector_solve;
if constexpr (std::is_same_v) {
// Solve Ax=b where A = U^T U. Solve U^T c = b, using x to store c.
triangular_matrix_vector_solve(transposed(A),
opposite_triangle(t), explicit_diagonal, b, x);
// Solve U x = c, overwriting x with result.
triangular_matrix_vector_solve(A, t, explicit_diagonal, x);
}
else {
// ...
}
}
3. Более удобный и безопасный способ форматирования рантаймовых строк ( https://wg21.link/p2905r2, https://wg21.link/p2918r2)
// Before:
std::vformat(str, std::make_format_args(42));
// After:
std::format(std::runtime_format(str), 42);
4. Возможность создания в рантайме точек останова для отладки, ( https://wg21.link/p2546r5)
// Здесь мы хотим переключиться в отладчик
std::breakpoint_if_debugging();
// А здесь мы из него возвращаемся
И многое, более мелкое, другое.
Как вы думаете, комитет тратит свои силы на стоящие вещи? И что бы хотели видеть вы в C++26?