Он генерирует следующее примечание на 64-битной GCC 11.2. < /p>
Код: Выделить всё
: In function 'void a(Color)':
:19:6: note: parameter passing for argument of type 'Color' when C++17 is enabled changed to match C++14 in GCC 10.1
19 | void a(Color c) {
| ^
Compiler returned: 0
[*] Унаследовать базовый класс
Используйте по умолчанию конструктор копии. Взволнован, я должен быть об этом?#include
class C {};
// Must inherit to produce the note mentioned below.
class Color : C {
public:
double x={1.0}, y={2.0}, z={3.0};
Color() = default;
// Copy constructor.
// Default - gives note: parameter passing for argument of type 'rgb_color' when C++17 is enabled changed to match C++14 in GCC 10.1 warning.
Color(const Color& other) = default;
// Explicit - does NOT give the note
//Color(const Color& other): C(other),x(other.x),y(other.y),z(other.z){}
};
void a(Color c) {
std::cout
Редактировать: этот вопрос входит в специфики относительно влияния наследования и копирования конструктора на сгенерированную компилятор. Пожалуйста, прочитайте подробно перед маркировкой как дубликат.
Подробнее здесь: https://stackoverflow.com/questions/777 ... -match-c14
Мобильная версия