using A::max;
невозможно, поскольку A
является классом, а не пространством имен.
И ответ на ваш запрос прост:
return max(i, A::max(p));
Я не уверен, что еще вы надеетесь достичь здесь.
Обновление: Еще подумал, и вы можете изменить код таким образом?
#include <algorithm>
#include <utility>
#include <iostream>
struct B {
static int max(int A, int B)
{
return std::max(A,B);
}
};
struct A:B{
static int max(std::pair<int, int> const& pair) {
return std::max(pair.first, pair.second);
}
using B::max;
int use_max(std::pair<int, int> const & p, int const i) {
return max(i, max(p));
}
};
int main() {
std::cout << A().use_max(std::make_pair(2, 3), 1);
}