Вопросы по теме 'overload-resolution'

Разрешение имени члена во время выполнения
Учитывая тип , имя и подпись , как я могу выполнить поиск члена с именем name и подпись signature с использованием правил C # 7.4 (7.4 - это номер главы из спецификации языка C #) (или, по крайней мере, их часть ... Допустим, я могу жить с...
438 просмотров

Почему эти перегрузки не неоднозначны?
Следующий код отлично компилируется с gcc и clang. template <typename T> struct identity { typedef T type; }; template <typename T> void foo(typename identity<T>::type); template <typename T> void foo(T); int main()...
191 просмотров

О разрешении перегрузки оператора
Предположим, есть два класса со следующим неявным и явным шаблоном оператора: class Foo { public static implicit operator decimal (Foo foo) { throw new NotImplementedException(); } public static implicit operator Foo...
195 просмотров

Разрешение перегрузки: как это не двусмысленно?
Предположим, у нас есть этот код, скопированный из отдельного вопроса: namespace x { void f() { } class C { void f() { using x::f; f(); // <== } }; } Имя...
114 просмотров

Почему выбирается общий метод, когда существует не универсальный?
Программа ниже производит этот вывод: Foo<T> called Process is terminated due to StackOverflowException. Итак, Foo(baz) вызывает общий Foo<T> , но Bar(baz) рекурсивно и не вызывает Bar<T> . Я на С# 5.0 и...
434 просмотров

Инициализация прямого списка успешно компилируется, но обычная прямая инициализация завершается ошибкой. Почему?
Например, такой код: struct A { A(int); }; struct B { B(A); }; int main() { B b{{0}}; // OK B c({0}); // error } Сообщения об ошибках: f.cc: In function 'int main()': f.cc:7:9: error: call of overloaded 'B(<brace-enclosed...
347 просмотров
schedule 28.01.2024

Разрешение перегрузки: предпочтителен ли оператор прямого преобразования (как следствие исключения копирования)?
Данный struct E { }; struct P { explicit P(E) {} }; struct L { operator E() {return {};} operator P() {return P{E{}};} }; Должно ли выражение P{L{}} компилироваться в соответствии со стандартом языка C ++ 17? Разные...
178 просмотров

Наследование шаблонного оператора = в С++ 14: различное поведение с g++ и clang++
У меня есть этот код, который работает, как и ожидалось, с GCC 9.1: #include <type_traits> template< typename T > class A { protected: T value; public: template< typename U, typename...,...
174 просмотров

Дополнительное продвижение Swift против универсального разрешения перегрузки
Пожалуйста, рассмотрите следующий код: protocol P {} class X {} class Y: P {} func foo<T>(_ closure: (T) -> Void) { print(type(of: closure)) } func foo<T>(_ closure: (T) -> Void) where T: P { print(type(of: closure)) } let...
84 просмотров

Как избежать недопустимой перегрузки из стандартной библиотеки?
В моем проекте С++ 14 я использую #include <algorithm> using std::max; // for max(a,b) но я также хочу предоставить функцию max() , принимающую любое количество аргументов (равного типа). С этой целью я добавил...
123 просмотров

Разрешение перегрузки с помощью шаблонов и ссылок rvalue
Это поведение разрешения перегрузки сбивает меня с толку: #include "stdio.h" template<class T> class C { public: C(T v): m(v) {}; T m; template<class U> T f(U &&p) { printf("rRef...
101 просмотров
schedule 16.09.2022

Стандартная функция ML Foldl/Foldr с оператором умножения?
Как правильно использовать оператор умножения для Standard ML (SMLNJ) для функций foldr и foldl? Использование foldr (op *) 1 [1,2,3]; дает ошибку Standard ML of New Jersey v110.78 [построено: четверг, 31 августа, 03:45:42 2017] stdIn:1.12...
18 просмотров