overload-resolution

Я пытаюсь понять, почему GCC выбирает f(char, A<C, 5> &var) для разрешения перегрузки в коде ниже: template <class C, int N> struct A { }; template <class C> struct A<C, 8> { static_assert(sizeof(C) > 8, "Assertion in A<C,8>"); }; template <class C> struct A<C, ...

На этот вопрос уже есть ответ здесь: Как указать указатель на перегруженную функцию? 6 ответов #include <thread> struct Callable { void start() {}; void start(unsigned) {}; }; int main() { Calla...

Учитывая этот код: #include <string> #include <vector> #include <iostream> template <typename T> std::string stringify(const T&) { return "{?}"; } template <typename T> std::string proxy(const T& in) { return stringify(in); } // trying to specialize "stringif...

Это более сложный вопрос, упомянутый в Как работает разрешение перегрузки, когда аргумент является перегруженной функцией? Ниже код компилируется без каких-либо проблем : void foo() {} void foo(int) {} void foo(double) {} void foo(int, double) {} // Uncommenting below line break compilation //template&...

С g++ 3.4 и 4.7 я наблюдал следующее странное поведение: Шаблон функции не соответствует, если необходимо пользовательское преобразование, где обычная функция будет. Я не смог найти соответствующее правило в стандарте C++98. Является ли g++ правильным (как я предполагаю)? Или это ошибка? template <class...

Следующий код выдает "неоднозначное совпадение вызова"во время компиляции: class ABC{} class DEF{} class Program { static void Main(string[] args) { Debug.WriteLine(func(null)); } static string func(ABC abc) { return ""; } static string func(DEF def) { ...

Я работаю над назначением, в котором я должен перегрузить оператор вставки, чтобы взять объект узла. Я создал функцию перегрузки оператора вне определения класса,но внутри узла.H файл. Все компилируется нормально, но перегруженный оператор не вызывается, вместо этого я получаю простой адрес объекта. Мне зап...

Я пытаюсь найти элемент в векторе, используя перегруженный оператор==(). Однако, если использовать type1 в следующем коде, выход будет равен 1 и 0 (не найден). Использование type2 дает как 1, так и 1. Среда-Xubuntu 12.04 и g++ версии 4.6.3. #include <iostream> #include <vector> #include <algo...

у меня есть этот класс public class Overloaded { public void ComplexOverloadResolution(params string[] something) { Console.WriteLine("Normal Winner"); } public void ComplexOverloadResolution<M>(M something) { Console.WriteLine("Confused"); } } если я назову э...

Я пытаюсь понять метод разрешения перегрузки. почему это неоднозначная: void func(double, int, int, double) {} void func(int, double, double, double) {} void main() { func(1, 2, 3, 4); } но это не? void func(int, int, int, double) {} void func(int, double, double, double) {} void main() { func(...