Войти
ПрограммированиеФорумОбщее

C++, enum reflection (enum.hpp) (3 стр)

Страницы: 1 2 3
#30
3:38, 23 ноя. 2019

Dimich
> Новый gcc и соответственно msvc там нужен только для шаблонной магии вывода
> типов c++17, в c++11 можно так же писать enum_name<Enum, Enum::Val>();

Нет, хоть как пиши, всё что связано с именем требует GCC >= 9 там. Инфа получена из чтения исходников (где это кристально видно) и баловства на разных компилерах с ним.

#31
11:16, 23 ноя. 2019

nes
> const int32 MaxSomeEnumKeys = static_cast<int32>(SomeEnum::EnumCount_);
А это зачем?

int do_shit() {
return 0;
}
do_shit(); // << дублирование названия функции?
#32
12:02, 23 ноя. 2019

NyakNyakProduction
>А это зачем?
Чтоб не писать потом в коде постоянно static_cast<int32>(SomeEnum::EnumCount).

#33
12:46, 23 ноя. 2019
Чтоб не писать потом в коде постоянно static_cast<int32>(SomeEnum::EnumCount).

Так же нельзя !
Для этого же с++ и придумали, что бы только так писать :)

Надо всегда писать static_cast<int32>(...) !
Это как по утрам обливаться холодной водой , для укрепления здоровья и потенции :)))

#34
15:55, 23 ноя. 2019

nes
> static_cast<int32>(SomeEnum::EnumCount).
Почему не uint? У вас будут негативные значения? И вам надо будет как-то знать сколько их? Зачем? Почему 32? Вам надо все эти 2 миллиарда значений?

Сколько вообще раз вам пригодилось знать кол-во энумов? Кроме ситуаций, когда надо статически выделить массив для каких-нибудь параллельных ивентов, которые ещё по кодам не должны быть сильно разбросаны?

На каждый чих какие-то фреймворки, лол.

#35
18:24, 23 ноя. 2019

NyakNyakProduction
>Почему не uint? У вас будут негативные значения?
Не исключено.

>И вам надо будет как-то знать сколько их? Зачем?
Например, чтоб завести массив с флагами по этим энумам,
например массив keys, с состоянием клавиатуры.
А еще для проверки границ, чтоб быть уверенным что значение не выходит за допустимый диапазон.

>Почему 32?
Для бинарной совместимости, вестимо.

>Сколько вообще раз вам пригодилось знать кол-во энумов?
Не часто.

#36
18:54, 23 ноя. 2019

MATov
> Нет, хоть как пиши, всё что связано с именем требует GCC >= 9 там.
Ты наркоман? Макрос __PRETTY_FUNCTION__ доступен в gcc 5, c++17 там нужен только для constexpr, точнее для фишек, которые не позволяет c++11, а так как я предложил, можно хоть где писать.

#37
0:20, 24 ноя. 2019

Dimich

Нет, gcc9 нужен именно для __PRETTY_FUNCTION__

#include <iostream>

enum class Enum123 {
  ELEM1,
  ELEM2,
  ELEM3
};

template <typename T, T Elem>
void f() {
  std::cout << __PRETTY_FUNCTION__ << std::endl;
}


int main() {
  f<Enum123, Enum123::ELEM2>();
  return 0;
}

Вывод gcc-9:

void f() [with T = Enum123; T Elem = Enum123::ELEM2]

Вывод gcc-8:

void f() [with T = Enum123; T Elem = (Enum123)1]

#38
5:56, 24 ноя. 2019

Dimich
> Ты наркоман?
Нет, ты. Перед тем как оскорблять кого-то, убеждайся в том, что сам не колешься хотя бы.

#39
9:29, 24 ноя. 2019

MATov
Ты дебил? Он ведь не утверждал, а спросил. Подобные вопросы являются неотъемлемой особенностью рускоязычных форумов и служат для более конструктивного хода обсуждения.

#40
9:37, 24 ноя. 2019

CapSopener
Тема вроде бы не во флэйме. Так что ваш пассаж с попыткой оправдать мудачество сотоварища не засчитывается :)

#41
9:42, 24 ноя. 2019

CapSopener
> Подобные вопросы являются неотъемлемой особенностью рускоязычных форумов и
> служат для более конструктивного хода обсуждения.

Подобные вопросы выдают недалёкость собеседника и совершенно не способствуют нормальному ведению диалога для вменяемых людей, но тебе этого не понять, как и товарищу твоему. И вместо оправданий хамского общения сходили бы лучше пролечились оба.

#42
10:00, 24 ноя. 2019

MATov
Пожалуй, действительно, не лучшая идея без причины называть человека дебилом/наркоманом. Прости.

Страницы: 1 2 3
ПрограммированиеФорумОбщее

Тема в архиве.