Phần nào của đặc tả C ++ hạn chế tra cứu đối số phụ thuộc vào việc tìm các mẫu hàm trong tập hợp các không gian tên được liên kết? Nói cách khác, tại sao lệnh gọi cuối cùng main
bên dưới không biên dịch được?
namespace ns {
struct foo {};
template<int i> void frob(foo const&) {}
void non_template(foo const&) {}
}
int main() {
ns::foo f;
non_template(f); // This is fine.
frob<0>(f); // This is not.
}