Пространство аргумента в C++
Поиск, зависящий от аргумента добавляет к кандидатам функции из пространств имен типов в списке параметров.
Если в глобальной области уже есть одноименная функция, для пользовательского типа может существовать другая версия рядом с типом. Каждая перегрузка печатает свое слово - по выводу видно, какая версия попала в вызов.
Объявим глобальную care и одноименную
функцию в Garden для Tree,
затем вызовем имя с объектом сада - на
экране должно появиться garden,
а не global:
#include <iostream>
void care(int) {
std::cout << "global\n";
}
namespace Garden {
struct Tree {};
void care(Tree) {
std::cout << "garden\n";
}
}
int main() {
Garden::Tree oak{};
care(oak);
return 0;
}
Добавьте в Garden перегрузку care
для Tree&, печатающую ref.
Передайте в вызов именованную переменную
Tree и выведите полученную строку.