Esempio n. 1
0
void test_basic_exclusion() {
    static_assert(!noexcept(HasCopyConstructor((HasCopyConstructor()))), "");
    HasCopyConstructor hcc;
    static_assert(!noexcept(hcc = HasCopyConstructor()), "");

    static_assert(!noexcept(HasCopyAssignment((HasCopyAssignment()))), "");
    HasCopyAssignment hca;
    static_assert(!noexcept(hca = HasCopyAssignment()), "");

    static_assert(noexcept(HasMoveConstructor((HasMoveConstructor()))), "");
    HasMoveConstructor hmc;
    hmc = HasMoveConstructor(); // expected-error {{object of type 'HasMoveConstructor' cannot be assigned because its copy assignment operator is implicitly deleted}}

    (HasMoveAssignment(HasMoveAssignment())); // expected-error {{uses deleted function}}
    HasMoveAssignment hma;
    static_assert(noexcept(hma = HasMoveAssignment()), "");

    static_assert(!noexcept(HasDestructor((HasDestructor()))), "");
    HasDestructor hd;
    static_assert(!noexcept(hd = HasDestructor()), "");
}
Esempio n. 2
0
void test_basic_exclusion() {
  static_assert(!noexcept(HasCopyConstructor((HasCopyConstructor()))), "");
  HasCopyConstructor hcc;
  static_assert(!noexcept(hcc = HasCopyConstructor()), "");

  static_assert(!noexcept(HasCopyAssignment((HasCopyAssignment()))), "");
  HasCopyAssignment hca;
  static_assert(!noexcept(hca = HasCopyAssignment()), "");

  static_assert(noexcept(HasMoveConstructor((HasMoveConstructor()))), "");
  HasMoveConstructor hmc;
  hmc = HasMoveConstructor(); // expected-error {{selected deleted operator}}

  (HasMoveAssignment(HasMoveAssignment())); // expected-error {{uses deleted function}}
  HasMoveAssignment hma;
  static_assert(noexcept(hma = HasMoveAssignment()), "");

  static_assert(!noexcept(HasDestructor((HasDestructor()))), "");
  HasDestructor hd;
  static_assert(!noexcept(hd = HasDestructor()), "");
}