Запитання з тегом «overload-resolution»

11
Чому публічний метод const не називається, коли non-const - приватний?
Розглянемо цей код: 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 void …

3
Чому обрано таке перевантаження оператора перетворення?
Розглянемо наступний код . struct any { template <typename T> operator T &&() const; template <typename T> operator T &() const; }; int main() { int a = any{}; } Тут другий оператор перетворення вибирається за роздільною здатністю перевантаження. Чому? Наскільки я розумію, два оператори виводяться на 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.