Инициализация std :: массив в функции шаблона с неявным преобразованием [дублировать]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Инициализация std :: массив в функции шаблона с неявным преобразованием [дублировать]

Сообщение Anonymous »

Я создаю контейнер, используя перечисления в качестве индексов. Но я не могу найти способ инициализации основного массива, который сохраняет неявные преобразования. Вот код: < /p>
#include
#include
#include

template
class EnumArray
{
static constexpr int size_v = (1 * ... * static_cast(Enums::count));
public:
EnumArray(std::initializer_list const list) : m_data{list} {} // Please fix this line

public:
T &at(Enums... indexes) { return m_data[index(indexes...)]; }

private:
template
static int index(CurrentEnum i) { return static_cast(i); }

template
static int index(CurrentEnum i_0, SubEnums... i_n) { return index(i_0) + static_cast(CurrentEnum::count) * index(i_n...); }

private:
std::array m_data;
};

namespace veryComplex
{
class ObjectThatIDontWantToCopyAgainAndAgain
{
public:
ObjectThatIDontWantToCopyAgainAndAgain(ObjectThatIDontWantToCopyAgainAndAgain const&) = delete; // in case that was unclear
ObjectThatIDontWantToCopyAgainAndAgain(int x) : m_x(x) {} // Conversion constructor

public:
int value() const { return m_x; }

private:
int m_x;
};
}

enum class K { k1, k2, count };

enum class R { r1, r2, r3, count };

int main(int argc, char** argv)
{
EnumArray myArray = {11,12,21,22};
std::cout

Подробнее здесь: https://stackoverflow.com/questions/797 ... conversion
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»