Имеется класс следующего вида:
template <size_t size>
class A {
Any_Type array[size];
public:
//Тут может быть какой-либо шаблон...
A(std::initializer_list<Any_Type> init_list) -> A</*Тут должен быть параметр для CTDA*/> {
//Инициализация массива array данными из init_list
}
};
По итогу это должно работать таким способом:
A a = {...};
То есть без явного указания размера типа.
Что я уже пробовал:
// Самый тупой вариант
A(std::initializer_list<Any_Type> init_list) -> A<init_list.size()> // Нет ибо init_list не существует во время компиляции и даже constexpr тут не поможет
A(std::initializer_list<Any_Type> init_list) -> A<std::initializer_list<Any_Type>::size()> // Разумеется потому что size не статик ф-ция
template<size_t count_elem>
A(Any_Type const (&arr)[count_elem]) -> StaticByteArray<count_elem> // Nope...
template<size_t count_elem>
A(Any_Type const (&arr)[count_elem]) -> StaticByteArray<sizeof (arr)> // Nope...
// Да это точно не вариант, ибо шаблон будет хватать любой мусор, но всё же...
template<typename T>
A(T arr) -> StaticByteArray<sizeof (arr)> // Хз почему но нет...
Может кто работал с этим