Articles of перегрузкой

Overload = оператор classа, который должен вести себя как matrix

У меня есть шаблон classа, который будет вести себя как matrix. Итак, usecase – это что-то вроде: Matrix matrix(10,10); matrix[0][0]=4; //set the values for the rest of the matrix cout<<matrix[1][2]<<endl; Когда я устанавливаю значения непосредственно в конструкторе, он работает хорошо, но когда я хочу использовать matrix[x][y]=z; Я получаю error: lvalue required as left operand of […]

«Неоднозначная перегрузка для« оператора << »* без * перегрузки

Поэтому я пытаюсь реализовать PRSG xorshift как параметризованный class стиля STL от random , например, std::mersenne_twister_engine , поэтому я могу использовать его с теми довольно удобными дистрибутивами из random библиотеки и т. Д. Во всяком случае, у меня проблема с перегрузкой operator<< и, честно говоря, я полностью в тупике. Класс параметризуется следующим образом: template class […]

создание экземпляра шаблона с множественным наложением шаблона

Каковы правила создания экземпляра шаблона, когда мы передаем (multi) производный class функции шаблона, ожидающей базовый class? Например: #include template struct C {}; struct D : C, C {}; template void f (const C &y) { std::cout << x << "\n"; } int main () { f (D ()); } MSVC 2015 печатает 0, clang 3.8 […]

Как сбрасывать кандидатов в функции перегрузки по перегрузке?

Как я могу сбросить функции кандидата (или жизнеспособные функции или наилучшие жизнеспособные функции) для вызова функции? Я знаю, что g ++ предоставляет возможность сбрасывать иерархию classов . (Фактически, Visual Studio 2010 предоставляет аналогичный вариант, но он недокументирован. Я помню, что читал что-то об этом – может быть, в блоге команды VC ++, но я не […]

Разрешение перегрузки, шаблоны и наследование

#include struct A {}; struct B : public A {}; template void foo(const T &x) { std::cout << "Called template" << std::endl; } void foo(const A &a) { std::cout << "Called A" << std::endl; } int main() { foo(A()); foo(B()); return 0; } Это печатает: Called A Called template У меня создалось впечатление, что подходящая […]

Перегруженное разрешение вызова виртуальной функции

Пожалуйста, рассмотрите следующий код: class Abase{}; class A1:public Abase{}; class A2:public A1{}; //etc class Bbase{ public: virtual void f(Abase* a); virtual void f(A1* a); virtual void f(A2* a); }; class B1:public Bbase{ public: void f(A1* a); }; class B2:public Bbase{ public: void f(A2* a); }; int main(){ A1* a1=new A1(); A2* a2=new A2(); Bbase* b1=new […]

Частичное упорядочение шаблонов функций, содержащих шаблонные пакеты параметров

Частичное упорядочение шаблонов функций, содержащих пакеты параметров шаблонов, не зависит от количества выведенных аргументов для этих пакетов параметров шаблона. template struct Tuple { }; template void g(Tuple); // #1 template void g(Tuple); // #2 template void g(Tuple); // #3 g(Tuple()); // calls #1 g(Tuple()); // calls #2 g(Tuple()); // calls #3 g(Tuple()); // calls #3 […]

Что использовать: переместить оператор присваивания и оператор присваивания копии

Кажется, я не понимаю, почему вы используете move assignment operator : CLASSA & operator=(CLASSA && other); //move assignment operator copy assignment operator : CLASSA & operator=(CLASSA other); //copy assignment operator Оператор move assignment operator принимает только r-value reference на r-value reference например CLASSA a1, a2, a3; a1 = a2 + a3; В copy assignment operator […]

Разрешение перегрузки и частичный порядок шаблонов

Рассмотрим эту простую пару шаблонов функций. template void foo(T& ) { std::cout << __PRETTY_FUNCTION__ << '\n'; } template void foo(const C& ) { std::cout << __PRETTY_FUNCTION__ << '\n'; } Если мы будем называть foo аргументом non-const: int i = 4; foo(i); T& перегрузка предпочтительна на основе [over.ics.rank] /3.2.6, поскольку выведенная ссылка int& меньше cv -qualified, […]

Дополнительные параметры функции: использовать аргументы по умолчанию (NULL) или перегрузить функцию?

У меня есть функция, которая обрабатывает данный вектор, но может также создать такой вектор, если он не задан. Я вижу два варианта дизайна для такого случая, когда параметр функции является необязательным: Сделайте его указателем и сделайте его NULL по умолчанию: void foo(int i, std::vector* optional = NULL) { if(optional == NULL){ optional = new std::vector(); […]

Intereting Posts
Опционные парсеры для C / C ++? Почему размер make_shared двух указателей? Является ли обсуждение моей книги о типах возврата lambda неправильным? Включение оптимизации всей программы в какой-либо статической библиотеке значительно увеличивает размер библиотеки! Может ли утечка памяти при использовании вектора указателя в c ++? Двойная строка с нулевым завершением Может ли CMake сгенерировать файл конфигурации? Предоставление правильной семантики перемещения Совершенно захватывающий идеальный экспедитор (универсальная ссылка) в lambda Что означает «аргументы шаблона специализации, выведенные из аргументов первичного шаблона»? Не удается распечатать текст без текста в окне консоли. Как открыть окно входа в Windows gdbserver следует за ребенком Проблема с файловой системой OpenCV VideoWriter Связывание с компиляцией dll, но вызывает segfault