Описание тега overload-resolution
Overload resolution is a language mechanism to select among several viable function overloads. Its rules are intricate and often surprising, even for experienced users.
2
ответа
Вызовите перегруженный метод сторонней сборки из универсального метода, используя динамический (или другими способами)?
Обновление: оказалось, что были детали, которые я полностью пропустил, пока я не посмотрел на исходный код библиотеки, которую я использовал. Извиняюсь за плохой пример кода, пытаясь сосредоточиться на том, что я считаю уместным. Работа с библиотеко…
27 июл '15 в 20:34
1
ответ
Разрешение перегрузки шаблона функции с двумя пакетами параметров
Рассмотрим следующий код: #include<iostream> template<class..., class... T> int f(T...) { return 1; } template<class... T> int f(T...) { return 2; } int main() { std::cout << f(1); } Компилирует и печатает 1 на gcc 8.2, но не…
18 ноя '18 в 05:27
3
ответа
Почему мы не находим правильную перегрузку оператора при использовании макроса?
Я пишу шаблон класса, который принимает произвольный указатель на функцию в качестве аргумента нетипичного шаблона. Я хотел бы использовать template <auto F> struct Foo; но мой компилятор (MSVC 2017.5) не поддерживает auto в списке параметров …
19 ноя '17 в 14:45
2
ответа
Разрешение перегрузки и пользовательское преобразование
Рассмотрим простой код: struct A; struct B { B(){} B(A const&){ } }; struct A { operator int() const {return 0;}; }; void func(B){} void func(char){} int main() { func(A()); //ambiguous call oO } Прежде всего, я не уверен, правильно ли я все пон…
28 дек '15 в 08:42
2
ответа
Аномалия перегрузки функции Scala
В Scala, почему эта перегрузка была разрешена? class log { def LogInfo(m: String, properties: Map[String, String]): Unit = { println(m) } def LogInfo(m: String, properties: Map[String, String], c: UUID = null): Unit = { println(m + c.toString()) } }…
05 окт '16 в 18:32
4
ответа
Почему перегрузка конструктора разрешается неправильно?
Это мой (раздетый) класс и реализация одного объекта: template <typename T, typename Allocator = std::allocator<T> > class Carray { typedef typename Allocator::size_type size_type; // ... explicit Carray(size_type n, const T& value, …
18 май '11 в 20:10
2
ответа
Может компилятор сказать мне, какую перегруженную или шаблонную функцию он выбрал?
В частности, используя g++ в linux, есть ли способ определить, какая перегруженная или шаблонная функция была выбрана для конкретного оператора? Более конкретно, я не предполагаю, что я обязательно знаю все возможные варианты, которые могут быть в з…
01 ноя '12 в 17:17
3
ответа
Перегрузка с помощью "const" в конце объявления функции
У меня есть 3 попытки перегрузить функцию "begin()" class Test { public: //case 1: compiler error int begin(); const int begin(); //case 2:compiler warning: type qualifiers ignored on function return type int begin(); const int begin() const; //case…
20 авг '15 в 16:57
2
ответа
Вызов более конкретной перегруженной функции из ссылки на базовый класс
Прежде всего, извините за загадочный заголовок, это нелегко объяснить. Я хочу реализовать шаблон Visitor в C++, используя перегруженные функции. Это моя ситуация: У меня есть коллекция парсеров. Каждый синтаксический анализатор возвращает определенн…
10 апр '15 в 15:42
1
ответ
Частичное упорядочение шаблонов функций, содержащих пакеты параметров шаблона
Частичное упорядочение шаблонов функций, содержащих пакеты параметров шаблона, не зависит от количества выводимых аргументов для этих пакетов параметров шаблона. template<class...> struct Tuple { }; template< class... Types> void g(Tuple…
29 окт '15 в 22:53
1
ответ
Разрешение перегрузки функции с nullptr в качестве аргумента
Рассмотрим код ниже. Хотя обе перегрузки fun принимать указатели, проходя мимо nullptr в fun не приводит к ошибке компиляции. Принимая во внимание, что очень похожая функция bun не может скомпилировать. Когда я печатаю типы аргумента i с помощью typ…
22 фев '19 в 03:48
4
ответа
Как устранить неоднозначность вызова перегруженной функции с литералом 0 и указателем
Я почти уверен, что это, должно быть, уже было здесь, но я не нашел много информации о том, как решить эту проблему (без использования вызова): Учитывая две перегрузки, я хочу, чтобы вызов с функцией с литералом 0 всегда вызывал версию unsigned int:…
05 янв '11 в 23:59
2
ответа
Почему сужение не влияет на разрешение перегрузки?
Учтите следующее: struct A { A(float ) { } A(int ) { } }; int main() { A{1.1}; // error: ambiguous } Это не скомпилируется с ошибкой о неоднозначной перегрузке A::A, Оба кандидата считаются жизнеспособными, потому что требование просто: Во-вторых, д…
30 июл '15 в 17:19
2
ответа
F# и члены, реализованные в интерфейсе
У меня досадная ошибка. type Animal = abstract member Name : string type Dog (name : string) = interface Animal with member this.Name : string = name let pluto = new Dog("Pluto") let name = pluto.Name Последняя строка, а именно "Имя", генерирует оши…
29 янв '13 в 23:08
3
ответа
Как вывести кандидатов в функции разрешения перегрузки?
Как я могу сбросить функции-кандидаты (или жизнеспособные функции или лучшие жизнеспособные функции) для вызова функции? Я знаю, что g++ предоставляет возможность сбросить иерархию классов. (На самом деле, Visual Studio 2010 предоставляет аналогичну…
20 сен '10 в 10:49
2
ответа
Разрешение не виртуального метода - почему это происходит
Мое понимание (в C#) того, как разрешаются не виртуальные методы, заключается в том, что это зависит от типа переменной (а не от типа экземпляра). Посмотрите на код ниже. class Program { static void Main(string[] args) { Sedan vehicle = new Sedan();…
15 дек '12 в 20:08
1
ответ
Ищите код Java, реализующий алгоритм разрешения перегрузки javac
Предположим, у меня есть массив Objectс (в частности, Object[]) и массив объектов конструктора. Кто-нибудь может отослать меня к какому-нибудь Java-коду, который может просматривать объекты Constructor и выбирать тот, который является наиболее конкр…
15 дек '11 в 21:30
1
ответ
Не соответствует правильная перегрузка в C#
У меня есть следующая программа using System; using System.Collections.Generic; using System.IO; using System.Linq; class Program { public static string Foo<T>(params T[] items) { return "A"; } public static string Foo<T>(IEnumerable<…
20 авг '13 в 11:45
2
ответа
Неоднозначное множественное наследование шаблонных классов
У меня есть реальная ситуация, которую можно обобщить в следующем примере: template< typename ListenerType > struct Notifier { void add_listener( ListenerType& ){} }; struct TimeListener{ }; struct SpaceListener{ }; struct A : public Notif…
08 мар '16 в 17:29
5
ответов
Зачем добавлять метод добавить неоднозначный вызов, если он не будет связан с неоднозначностью
У меня есть этот класс public class Overloaded { public void ComplexOverloadResolution(params string[] something) { Console.WriteLine("Normal Winner"); } public void ComplexOverloadResolution<M>(M something) { Console.WriteLine("Confused"); } …
29 дек '11 в 23:03