У меня есть следующий фрагмент кода:
void foo(double a) {}
namespace bar_space
{
struct Bar {};
void foo(Bar a) {}
}
foo (double) - это общая функция из библиотеки.
У меня есть свое собственное пространство имен bar_space с моей собственной структурой Bar. Я хотел бы реализовать перегрузку foo () для Bar, что делает Bar более похожим на встроенные типы.
Проблема появляется, когда я пытаюсь вызвать оригинальный foo (double) из пространства имен:
namespace bar_space
{
void baz()
{
foo(5.0); // error: conversion from ‘double’ to non-scalar type ‘ssc::bar_space::Bar’ requested
}
}
Не удается скомпилировать gcc на моем Fedora и Mac.
Звонок
foo(5.0)
извне пространства имен или с использованием
namespace bar_space
{
::foo(5.0)
}
работает нормально, но это не делает мою новую функцию такой же приятной, как я надеялся (другие разработчики также работают внутри bar_space).
bar_space скрывает оригинальную функцию? Есть ли способ сделать вызываемый foo (5.0) изнутри bar_space без явного определения области видимости (: :)? Любая помощь приветствуется.