единственное чем я могу это объяснить, так это тем, что t в этом синглтоне будет создан в момент создания синглтона, а не в момент первого обращения к getInstance(). это так?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
X>единственное чем я могу это объяснить, так это тем, что t в этом синглтоне будет создан в момент создания синглтона, а не в момент первого обращения к getInstance(). это так?
Из всех
template<typename T> T & Singleton<T>::instance = Singleton<T>::create();
в разных единицах трансляции останется только один. create() вызовется раз для каждого инстанциируемого типа до входа в main.
А так, неправильные пчелы дали неправильный мед. Кажется, человек, не очень разбирающийся в синглтонах, написал.
Здравствуйте, Abyx, Вы писали:
A>instantiate надо чтобы объект не выпилился оптимизатором
так instantiate() же пустая, и не volatile. думается мне, современные компиляторы "раскусят" эту ловушку
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
еще один смысл в таком синглтоне может быть в том, что, при использовании С++03 этот синглтон будет потокобезопасным и в функции getInstance() не нужен мьютекс.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
X>еще один смысл в таком синглтоне может быть в том, что, при использовании С++03 этот синглтон будет потокобезопасным и в функции getInstance() не нужен мьютекс.
Если ты в том смысле, что все инстансы будут созданы до main, то да.
Мне кажется, или тут была защита от копирования (путём утаскивания в private-секцию), которую затем потеряли при копи-пасте? Или что тогда такое этот StaticObject?
Здравствуйте, Mr.Delphist, Вы писали:
MD>Мне кажется, или тут была защита от копирования (путём утаскивания в private-секцию), которую затем потеряли при копи-пасте? Или что тогда такое этот StaticObject?
последствия рефака. я код сюда скопировал во время рефака, до сборки %)
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, niXman, Вы писали:
X>последствия рефака. я код сюда скопировал во время рефака, до сборки %)
Оператор operator= кинуть в private секцию не забудь. Определять его, так же как и конструктор копирования, не надо (у конструктора копирования фигурные скобочки лишние).
Здравствуйте, andyp, Вы писали:
A>Оператор operator= кинуть в private секцию не забудь.
ну да, не помешает...
A>Определять его, так же как и конструктор копирования, не надо (у конструктора копирования фигурные скобочки лишние).
кстати да. но оно там уже было.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, Abyx, Вы писали:
A>instance нужно чтобы была гарантия что объект создастся до вызова main()
3.6.2.4 It is implementation-defined whether the dynamic initialization of a non-local variable with static storage duration is done before the first statement of main. If the initialization is deferred to some point in time after the first statement of main, it shall occur before the first odr-use (3.2) of any function or variable defined in the same translation unit as the variable to be initialized.