Size: a a a

2020 November 18

in 2ch /pr/ 🎃
Kirill
подскажите пожалуйста
#include <iostream>
#include <type_traits>

template<class B, int N, class... Ts>
struct EnumBase {
   static constexpr int valueOf() = delete;
   static constexpr std::string_view nameOf() = delete;
};

template<class B, int N, class T0, class... Ts>
struct EnumBase<B, N, T0, Ts...> : public EnumBase<B, N + 1, Ts...> {
   using EnumBase<B, N + 1, Ts...>::valueOf;
   using EnumBase<B, N + 1, Ts...>::nameOf;

   static constexpr int valueOf(std::type_identity<T0>&&) {
       return N;
   }

   static constexpr std::string_view nameOf(std::type_identity<T0>&&) {
       std::string_view fullName(__PRETTY_FUNCTION__);
       auto res = fullName.substr(fullName.find("T0 = ") + 5);
       return res.substr(0, res.find(";"));
   }
};

template<class B, class... Ts>
struct Enum : public EnumBase<B, 0, Ts...> {
   template<class T>
   static constexpr int value = Enum::valueOf(std::type_identity<T>{});

   template<class T>
   static constexpr std::string_view name = Enum::nameOf(std::type_identity<T>{});
};


Почему я могу писать Enum::valueOf и Enum::nameOf, если Enum - это шаблон? Это работает как статический this, но я что-то нихуя не понимаю, это синтаксический сахар или что?
Ебать современные плюсы в кашу превратились ебаную
источник

K

Kirill in 2ch /pr/ 🎃
Ебать современные плюсы в кашу превратились ебаную
Почему? Это обычные шаблоны
источник

T

Tenshi in 2ch /pr/ 🎃
Kirill
подскажите пожалуйста
#include <iostream>
#include <type_traits>

template<class B, int N, class... Ts>
struct EnumBase {
   static constexpr int valueOf() = delete;
   static constexpr std::string_view nameOf() = delete;
};

template<class B, int N, class T0, class... Ts>
struct EnumBase<B, N, T0, Ts...> : public EnumBase<B, N + 1, Ts...> {
   using EnumBase<B, N + 1, Ts...>::valueOf;
   using EnumBase<B, N + 1, Ts...>::nameOf;

   static constexpr int valueOf(std::type_identity<T0>&&) {
       return N;
   }

   static constexpr std::string_view nameOf(std::type_identity<T0>&&) {
       std::string_view fullName(__PRETTY_FUNCTION__);
       auto res = fullName.substr(fullName.find("T0 = ") + 5);
       return res.substr(0, res.find(";"));
   }
};

template<class B, class... Ts>
struct Enum : public EnumBase<B, 0, Ts...> {
   template<class T>
   static constexpr int value = Enum::valueOf(std::type_identity<T>{});

   template<class T>
   static constexpr std::string_view name = Enum::nameOf(std::type_identity<T>{});
};


Почему я могу писать Enum::valueOf и Enum::nameOf, если Enum - это шаблон? Это работает как статический this, но я что-то нихуя не понимаю, это синтаксический сахар или что?
>Почему я могу писать
Лучше задавай вопросы "а почему бы и нет?" Почему оно не должно работать?
источник

T

Tenshi in 2ch /pr/ 🎃
и да, подключи пространство std, не позорься
источник

K

Kirill in 2ch /pr/ 🎃
Tenshi
>Почему я могу писать
Лучше задавай вопросы "а почему бы и нет?" Почему оно не должно работать?
Потому что Enum - это шаблон, и к нему надо обращаться как-то так Enum<Jopa, 1, 2, 3>
источник

K

Kirill in 2ch /pr/ 🎃
Tenshi
и да, подключи пространство std, не позорься
Толсто
источник

z

zarxis🦈 in 2ch /pr/ 🎃
Орёл Феникс
которые живут в говне и еще куда-то хотят
Тебе "соглашение об ассоциации" вообще о чем-то говорит?
источник

ОФ

Орёл Феникс... in 2ch /pr/ 🎃
если бы оно работало,я бы это признавал
источник

ОФ

Орёл Феникс... in 2ch /pr/ 🎃
но на деле ничего не изменилось
источник

z

zarxis🦈 in 2ch /pr/ 🎃
Орёл Феникс
если бы оно работало,я бы это признавал
АХАЭАХАЭАЭ
источник

z

zarxis🦈 in 2ch /pr/ 🎃
Почему это тв должен признпвать
источник

n

nhgklbcvderuwiojkgsd... in 2ch /pr/ 🎃
Ебать тут мини-филиал /po/.
источник

z

zarxis🦈 in 2ch /pr/ 🎃
Если это признает ваше главенство
источник

z

zarxis🦈 in 2ch /pr/ 🎃
nhgklbcvderuwiojkgsd Msopqqst
Ебать тут мини-филиал /po/.
Сам в ахуе
источник

T

Tenshi in 2ch /pr/ 🎃
Орёл Феникс
если бы оно работало,я бы это признавал
Ты какой-то микрочелик из нижних интернетов, твоё мнение можно на хую вертеть
источник

z

zarxis🦈 in 2ch /pr/ 🎃
Tenshi
Ты какой-то микрочелик из нижних интернетов, твоё мнение можно на хую вертеть
Вот вот
источник

ОФ

Орёл Феникс... in 2ch /pr/ 🎃
мне пофиг что там пишет типичный анимешный двачер
источник

ОФ

Орёл Феникс... in 2ch /pr/ 🎃
который в инете чувствует себя кем-то уникальными,который может другим что-то диктовать
источник

ОФ

Орёл Феникс... in 2ch /pr/ 🎃
но ты на деле никто)
источник

ОФ

Орёл Феникс... in 2ch /pr/ 🎃
такой же ноунейм,как я
источник