Сообщение Re[2]: Практика использования std::unique_ptr std::call_once от 23.11.2015 12:14
Изменено 23.11.2015 12:14 xobotik
Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, xobotik, Вы писали:
X>>Подскажите пожалуйста, плохо ли использовать (и почему плохо) std::unique_ptr , std::call_once и std::once_flag в следующем контексте:
U>не плохо
X>>P.S. Если код не очень, скажите пожалуйста, где косяки =)
U>
U> _loger — опечатка в имени переменной
U> почему эта переменная в анонимном неймспейсе? вы хотите на каждую TU по своему логгеру? если же логгер один, то нужно иметь в виду порядок инициализации глобальных переменных, кто-то в другом классе может захотеть в конструкторе пологировать, а логгер еще не создан
Что такое TU (включение заголовка)? Логгер один. Как тогда вы считаете нужно реализовать?
U> пробрасывать аргументы надо так:
U>
U>
Ок, спасибо =)
U>Здравствуйте, xobotik, Вы писали:
X>>Подскажите пожалуйста, плохо ли использовать (и почему плохо) std::unique_ptr , std::call_once и std::once_flag в следующем контексте:
U>не плохо
X>>P.S. Если код не очень, скажите пожалуйста, где косяки =)
U>
U> _loger — опечатка в имени переменной
U> почему эта переменная в анонимном неймспейсе? вы хотите на каждую TU по своему логгеру? если же логгер один, то нужно иметь в виду порядок инициализации глобальных переменных, кто-то в другом классе может захотеть в конструкторе пологировать, а логгер еще не создан
Что такое TU (включение заголовка)? Логгер один. Как тогда вы считаете нужно реализовать?
U> пробрасывать аргументы надо так:
U>
U>template<typename... Args>
U>void Init(Args&&... constructorArgs) {
U> std::call_once(_initFlag, [&]() { _resource.reset(new T(std::forward<Args>(constructorArgs)...)); });
U>}
U>
U>
Ок, спасибо =)
Re[2]: Практика использования std::unique_ptr std::call_once
Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, xobotik, Вы писали:
X>>Подскажите пожалуйста, плохо ли использовать (и почему плохо) std::unique_ptr , std::call_once и std::once_flag в следующем контексте:
U>не плохо
X>>P.S. Если код не очень, скажите пожалуйста, где косяки =)
U>
U> _loger — опечатка в имени переменной
U> почему эта переменная в анонимном неймспейсе? вы хотите на каждую TU по своему логгеру? если же логгер один, то нужно иметь в виду порядок инициализации глобальных переменных, кто-то в другом классе может захотеть в конструкторе пологировать, а логгер еще не создан
U> пробрасывать аргументы надо так:
U>
U>
Что такое TU (включение заголовка)? Логгер один. Как тогда вы считаете нужно реализовать?
Ок, спасибо =)
U>Здравствуйте, xobotik, Вы писали:
X>>Подскажите пожалуйста, плохо ли использовать (и почему плохо) std::unique_ptr , std::call_once и std::once_flag в следующем контексте:
U>не плохо
X>>P.S. Если код не очень, скажите пожалуйста, где косяки =)
U>
U> _loger — опечатка в имени переменной
U> почему эта переменная в анонимном неймспейсе? вы хотите на каждую TU по своему логгеру? если же логгер один, то нужно иметь в виду порядок инициализации глобальных переменных, кто-то в другом классе может захотеть в конструкторе пологировать, а логгер еще не создан
U> пробрасывать аргументы надо так:
U>
U>template<typename... Args>
U>void Init(Args&&... constructorArgs) {
U> std::call_once(_initFlag, [&]() { _resource.reset(new T(std::forward<Args>(constructorArgs)...)); });
U>}
U>
U>
Что такое TU (включение заголовка)? Логгер один. Как тогда вы считаете нужно реализовать?
Ок, спасибо =)