class Questionnary
{
std::string _str;
static Questionnary& getInstanceImpl(std::string* const s = nullptr)
{
static Questionnary instance{ s };
return instance;
}
Questionnary(std::string* const s)
: _str{ s ? move(*s) : std::string{} } // employ move ctor
{
if (nullptr == s)
throw std::runtime_error{ "Questionnary not initialized" };
}
public:
static Questionnary& getInstance()
{
return getInstanceImpl();
}
static void init(std::string s) // enable moving in
{
getInstanceImpl(&s);
}
Questionnary(Questionnary const&) = delete;
void operator=(Questionnary const&) = delete;
};