For the code below, I would expect the standard output to be a empty default constructed string.
How is the actual output of a.get() the string if all means to modify m_x through the constructor are disabled in this fashion?
#include <iostream>
#include <string>
class Test {
public:
  Test() = delete;
  explicit Test(const std::string& x) { m_x = x; }
  explicit Test(const Test&) = delete;
  explicit Test(Test&& rhs) {  }
  Test& operator=(const Test&) = delete;
  Test& operator=(Test&&) = delete;
  std::string get() const { return m_x; }
private:
  std::string m_x;
};
int main(int argc, char** argv)
{
  auto a(Test("tetst"));
  std::cout << a.get() << std::endl;
  return 0;
}
Aucun commentaire:
Enregistrer un commentaire