Пожалуйста, рассмотрите этот код:
#include <iostream>
namespace Foo{
void ool() // Version A
{
std::cout << "Foo::ool" << std::endl;
}
inline namespace Bar{
void ool() // Version B
{
std::cout << "Foo::Bar::ool" << std::endl;
}
}
}
int main()
{
Foo::ool(); // <- error
}
Как Clang, так и g++ корректно отмечают Foo::ool
как неоднозначные. Я могу вызвать Foo::Bar::ool
без проблем, но есть ли способ вызвать версию A без изменения ее объявления?
Я нашел людей в подобном положении, пытаясь понять, что происходит, но я не видел решения для этого случая.
Я в этой ситуации, потому что у меня есть проект, который включает объявление std::__1::pair
и std::pair
, выполненное в разных местах, причем std::__1
является встроенным пространством имен. Мне нужно, чтобы код явно указывал на std::pair
. Есть ли решение для этого?