prog.cpp: In instantiation of ‘static T& Singleton<T>::Get() [with T = Foo]’:
prog.cpp:27:7: required from here
prog.cpp:10:12: error: use of deleted function ‘Foo::Foo()’
static T instance;
^~~~~~~~
prog.cpp:18:7: note: ‘Foo::Foo()’ is implicitly deleted because the default definition would be ill-formed:
class Foo : public Singleton<Foo>
^~~
prog.cpp:18:7: error: ‘constexpr Singleton<T>::Singleton() [with T = Foo]’ is private within this context
prog.cpp:15:2: note: declared private here
Singleton() = default;
^~~~~~~~~