v2 и v3 почти одинаковы, но v3 использует приведение в стиле c (приведение в стиле c ++ безопаснее, так как вы получаете больше проверок во время компиляции).
v1 - это ... вау... Вот что он делает:
- приведите число
1
к указателю моего типа Ty
и обратно к int
.Я ожидал бы, что это все еще приведет к 1
. - приведению числа
1
к указателю моего типа Ty
, приведению к указателю cSingleton<Ty>
и, наконец, к int
.Я ожидал бы, что это также все еще будет 1
. - вычитать два.Я ожидал бы, что это будет 0.
- установите синглтон на
this
, как в v2 и v3, но с поправкой на "смещение"
Я предполагаю, что есть некоторыеПричудливость архитектуры где-то, где результат приведения 1 приводит к не-1 результату, поэтому смещение будет отличным от нуля.Так что это был бы способ приспособиться для приведения причуд на платформе.
Хотя это предположение, и я надеюсь, что будут некоторые комментарии для объяснения кода (но, вероятно, нет).Может быть, кто-то может ответить более конкретным ответом, чем мой, но, надеюсь, это даст вам возможность продолжить.