Size: a a a

2020 October 24

AF

Aidar Fattakhov in pro.cxx
Тут ещё вопрос нарушаешь ли ты принцип Лисков если твой базовый класс не имеет никакой рантайм семантики и имеет пустое тело и вообще неполиморфен
источник

AF

Aidar Fattakhov in pro.cxx
Но конечно нужно писать трейты
источник

CD

Constantine Drozdov in pro.cxx
Aidar Fattakhov
Ты хочешь ещё один квалификатор для комутативности?
ну там в духе
namespace user {
  struct T{};
  struct T_trait { using type = T; }
  T_trait decltrait(T const&); //тело не нужно
  struct T_addition_trait : T_trait { constexpr static bool is_commutative = true; };
  T operator + (T const& lhs, T const& rhs) {}
  T_addition_trait operator + (T_trait, T_trait); //тело не нужно
}

и написать что (decltrait(a) + decltrait(b)).is_commutative
источник

AF

Aidar Fattakhov in pro.cxx
Constantine Drozdov
ну там в духе
namespace user {
  struct T{};
  struct T_trait { using type = T; }
  T_trait decltrait(T const&); //тело не нужно
  struct T_addition_trait : T_trait { constexpr static bool is_commutative = true; };
  T operator + (T const& lhs, T const& rhs) {}
  T_addition_trait operator + (T_trait, T_trait); //тело не нужно
}

и написать что (decltrait(a) + decltrait(b)).is_commutative
Слишком вербозно
источник

CD

Constantine Drozdov in pro.cxx
Aidar Fattakhov
Слишком вербозно
Попробуй без этого
источник

AF

Aidar Fattakhov in pro.cxx
Constantine Drozdov
Попробуй без этого
operator_traits<T, addition> попробовал
источник

CD

Constantine Drozdov in pro.cxx
Aidar Fattakhov
operator_traits<T, addition> попробовал
для этого нужно имя addition
источник

AF

Aidar Fattakhov in pro.cxx
У тебя в коде будет дублирование кода точь в точь рантайм и трейтов
источник

CD

Constantine Drozdov in pro.cxx
не, у тебя будет в коде дублирование под каждую библиотеку, которая в своём неймспейсе объявила понятие addition
источник

AF

Aidar Fattakhov in pro.cxx
У меня тоже но хотяб явно
источник

CD

Constantine Drozdov in pro.cxx
я снимаю трейт с операции выражением этой операции, а не передаю имя операции параметром
источник

AF

Aidar Fattakhov in pro.cxx
Constantine Drozdov
не, у тебя будет в коде дублирование под каждую библиотеку, которая в своём неймспейсе объявила понятие addition
Чем addition хуже decltrait?
источник

CD

Constantine Drozdov in pro.cxx
Aidar Fattakhov
Чем addition хуже decltrait?
decltrait можно стандартизировать
источник

AF

Aidar Fattakhov in pro.cxx
Но не нужно потомучто это мусор
источник

AF

Aidar Fattakhov in pro.cxx
Потомучто у типа больше одного трейта
источник

CD

Constantine Drozdov in pro.cxx
это универсальное имя перехода от типа данных к его метатипу
источник

CD

Constantine Drozdov in pro.cxx
один
источник

CD

Constantine Drozdov in pro.cxx
это просто обертка над типом
источник

AF

Aidar Fattakhov in pro.cxx
Нет
источник

AF

Aidar Fattakhov in pro.cxx
Если один ты просто продублировал дерево наследования в компильтайм метакод
источник