Я хочу реализовать синглтоноподобную функциональность, используя std :: call_once просто для удовольствия или, возможно, мог бы улучшить сам шаблон Singleton.Вот что я пробовал до сих пор, но я застрял.Любая помощь будет высоко оценена.
class single {
public:
private:
single(){}
friend void boo(unique_ptr<single>&);
};
void boo(unique_ptr<single>& f) {
f.reset(new single());
}
unique_ptr<single>& bar() {
static once_flag flag;
static unique_ptr<single> f;
call_once(flag, boo,f);
return f;
}
int main()
{
unique_ptr<single> f;
f = move(bar());
unique_ptr<single> f2;
f2 = move(bar()); // this should not work but it does, work-around?
}