Компиляция с удаленными функциями завершается неудачно с помощью uclibc - PullRequest
0 голосов
/ 30 августа 2018

У меня есть проект, который я портирую из glibc в uclibc, и столкнулся с этой странностью.

gcc --std=c++11 Foo.cpp -o Foo-glibc
x86_64-linux-uclibc-gcc --std=c++11 Foo.cpp -o Foo-uclibc

// Compiles under glibc and uclibc
class Foo {
  Foo() = default;
  Foo(const Foo& arg) = delete;
  ~Foo() = default;
};

// Only compiles under glibc
class Foo {
  Foo() = default;
  Foo(const Foo& arg);
  ~Foo() = default;
};
Foo::Foo(const Foo& arg) = delete; // uclibc - Error: deleted definition of 'Foo::Foo(const Foo&)'

Почему возникает эта ошибка? Это ожидаемое поведение? Ничто из того, что я прочитал, не говорит о том, что uclibc не сможет справиться с этим.

1 Ответ

0 голосов
/ 31 августа 2018

Скорее всего, это ошибка в старых версиях gcc.

В 4.8.5 он работал , но в 5.1.0 он не .

Цитировать Алан Биртлз

[I] Нет смысла объявлять конструктор в объявлении класса [,], а затем удалять его вне строки. Как потребитель класса узнает, что конструктор удален?

...