Вопросы с тегом «overload-resolution»

11
Почему не вызывается общедоступный константный метод, если неконстантный - частный?
Рассмотрим этот код: struct A { void foo() const { std::cout << "const" << std::endl; } private: void foo() { std::cout << "non - const" << std::endl; } }; int main() { A a; a.foo(); } Ошибка компилятора: ошибка: 'void A :: foo ()' является закрытым '. Но когда я …

5
Зачем добавление метода добавляет неоднозначный вызов, если он не участвует в неоднозначности
У меня есть этот класс public class Overloaded { public void ComplexOverloadResolution(params string[] something) { Console.WriteLine("Normal Winner"); } public void ComplexOverloadResolution<M>(M something) { Console.WriteLine("Confused"); } } Если я назову это так: var blah = new Overloaded(); blah.ComplexOverloadResolution("Which wins?"); Пишет Normal Winnerв консоль. Но, если я добавлю еще один метод: public …

3
Почему выбрана эта перегрузка оператора преобразования?
Рассмотрим следующий код . struct any { template <typename T> operator T &&() const; template <typename T> operator T &() const; }; int main() { int a = any{}; } Здесь второй оператор преобразования выбирается разрешением перегрузки. Почему? Насколько я понимаю, два оператора выводятся operator int &&() constи operator int …

3
Как я могу предотвратить угадывание C ++ второго аргумента шаблона?
Я использую библиотеку C ++ ( strf ), которая где-то внутри имеет следующий код: namespace strf { template <typename ForwardIt> inline auto range(ForwardIt begin, ForwardIt end) { /* ... */ } template <typename Range, typename CharT> inline auto range(const Range& range, const CharT* sep) { /* ... */ } } …

1
Почему {} в качестве аргумента функции не приводит к двусмысленности?
Рассмотрим этот код: #include <vector> #include <iostream> enum class A { X, Y }; struct Test { Test(const std::vector<double>&, const std::vector<int>& = {}, A = A::X) { std::cout << "vector overload" << std::endl; } Test(const std::vector<double>&, int, A = A::X) { std::cout << "int overload" << std::endl; } }; int …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.