- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
open class Converter {
init() { }
func convert<T, U>(from: T) -> U {
return self.convert(from: T.self)
}
private func convert(from: MyClass1) -> MyClass2 {
return MyClass2(value: from.value)
}
private func convert(from: MyClass2) -> MyClass1 {
return MyClass1(value: from.value)
}
}
let converter = Converter()
let mC1 = MyClass1(value: 10)
let mC2 = MyClass2(value: 30)
let mc2_1: MyClass2 = converter.convert(from: mC1)
let mc1_1: MyClass1 = converter.convert(from: mC2)
Desktop 04.01.2018 16:53 # 0
var value: Int
init(value: Int) {
self.value = value
}
}
class MyClass2 {
var value: Int
init(value: Int) {
self.value = value * 2
}
}
если шо
cykablyad 04.01.2018 19:48 # 0
Desktop 05.01.2018 00:07 # 0
Кстати, вопрос на засыпку: можно ли сделать в крестах variadic template parameters так, чтобы для каждого typename была сгенерирована перегрузка некоторой функции?
Soul_re@ver 05.01.2018 00:29 # +6
http://coliru.stacked-crooked.com/a/e811fd1ce0c13519
Desktop 05.01.2018 10:27 # 0
Выглядит как сильное колдунство.
А с использованием только одной структуры это возможно сделать?
Надо ещё проверить, можно ли так забабахать абстрактный класс
bormand 05.01.2018 10:32 # 0
Скорее всего нет, миксины в крестах только через наследование эмулируются...
З.Ы. Вот метаклассы завезут лет через 10-20 - там можно будет.
Soul_re@ver 05.01.2018 14:33 # +3
В итоге у нас будет сколько языков в одном? Сейчас есть: С-с-классами, препроцессор, шаблонная метушня, язык описания концептов, добавят ещё рефлексию (со своим синтаксисом) и метаклассы. С++ — набор языков для создания своего идеального говноязыка.
bormand 05.01.2018 16:17 # +2
Может его хоть прочитать будет реально... А то сейчас только корейские задроты могут полностью прочесть и осознать стандарт.
COWuTEJIbTBOEuMAMKu 08.01.2018 10:38 # −1
3.14159265 11.01.2018 00:23 # +2
Полностью прочесть - это возможно.
Но вот "полностью осознать", это сможет только великий дзенский мудрец. Всю жизнь он будет курить Святой Стандарт в попытках полностью осознать Его божественность.
inho 11.01.2018 19:57 # +1
А то вот нашёл, его ещё покупать надо https://www.iso.org/standard/68564.html О_О
COWuTEJIbTBOEuMAMKu 11.01.2018 20:04 # 0
inho 11.01.2018 23:04 # 0
Soul_re@ver 11.01.2018 23:07 # +1
http://wg21.link/standard
http://wg21.link/
inho 11.01.2018 23:27 # 0
Soul_re@ver 11.01.2018 23:31 # +2
syoma 12.01.2018 00:36 # +2
Soul_re@ver 12.01.2018 00:44 # 0
syoma 12.01.2018 01:19 # +1
COWuTEJIbTBOEuMAMKu 12.01.2018 03:08 # 0
Soul_re@ver 12.01.2018 18:34 # 0
syoma 12.01.2018 18:38 # +1
inho 12.01.2018 19:04 # +1
Soul_re@ver 12.01.2018 19:10 # +5
syoma 12.01.2018 19:36 # 0
inho 12.01.2018 19:44 # +1
syoma 12.01.2018 19:54 # 0
Переписать на питоне?
COWuTEJIbTBOEuMAMKu 13.01.2018 01:42 # 0
inho 11.01.2018 23:30 # 0
3.14159265 11.01.2018 00:27 # +3
Да всё сведётся к какому-то абстрактному шаблонному лиспохаскелю с метушиными макросами и их реализацией для обратной поддержкой всей питушни начиная с 1970х.
COWuTEJIbTBOEuMAMKu 11.01.2018 00:33 # 0
inho 11.01.2018 19:51 # 0
Въебал минус
3.14159265 11.01.2018 00:25 # +1
Пиздец. Это внутри так обычная строка называется?
Кресты пробивают дно за дном.
Soul_re@ver 11.01.2018 19:05 # +3
N - имя в неймспейсах
St - ::std:: - первая часть имени, использует специфическое сокращение
7__cxx11 - inline namespace, используется в libstdc++ чтобы включать фичи С++11, когда надо. Гцц использует паскалестроки, длина в начале
12basic_string - название собственно класса
l - шаблонные параметры дальше, эквивалентно < в нормальном коде
c - char, ещё одно сокращение гцц
St - ::std::, опять
11char_traits - имя класса char_traits
l - начинаются шаблонные параметры
c - char
E - Закончилось описание предыдущего типа (char_traits)
Sa - ::std::allocator - сокращение
l - шаблонные параметры
c - char
E - закончилось описание allocator
E - закончилось описание basic_string
E - закончилось описание типа вообще.
Как можно заметить - всё очень просто!