Привет.
Хотел написать так, чтобы создавался массив размером == шаблонному параметру и все его элементы инициализировались некоторым значением (в момент создания, а не потом обходом, т.к массив юзер типов, надо через конструктор). Написал:
#include <array>
#include <utility>
#include <iostream>
using namespace std;
template <size_t I>
struct Init_val {
    static int f(int val) {return val;}
    static constexpr int i = 9;
};
template <size_t num>
struct S {
    void f(int val) {
        [val]<size_t ...I>(index_sequence<I...>) {
            array ar{(Init_val<I>::f(val) , ...)};
            array ar2{(Init_val<I>::i , ...)};
            // check
            for (int a : ar)
                cout << a;
            cout << endl;
            for (int a : ar2)
                cout << a;
            cout << endl;
        }(make_index_sequence<num>{});
    }
};
int main() {
    S<5> s;
    s.f(7);
}
шланг и ГЦЦ компилирует без ошибок, но при запуске ожидалось пять семёрок и пять девяток, но:
$ g++ 2.cpp -std=c++20  &&  ./a.out 
7
9
Надо багрепорт писать?
PS: я там два массива сделал, вообще мне нужен тот что с функцией, но т.к. с функцией конструкция шибко хитрая, то написал вариант с константой - тоже не работает.


