Здесь стоит упомянуть ИМО, что хотя исходный вопрос (и отличные ответы) определенно полезен, если вы хотите переименовать функцию (для этого есть веские причины!), Если все, что вы хотите сделать, это вырезать глубокое пространство имен, но сохраните имя, для этого есть using
ключевое слово:
namespace deep {
namespace naming {
namespace convention {
void myFunction(int a, char b) {}
}
}
}
int main(void){
// A pain to write it all out every time
deep::naming::convention::myFunction(5, 'c');
// Using keyword can be done this way
using deep::naming::convention::myFunction;
myFunction(5, 'c'); // Same as above
}
Это также имеет то преимущество, что оно ограничено областью видимости, хотя вы всегда можете использовать его на верхнем уровне файла. Я часто использую это для cout
и endl
поэтому мне не нужно , чтобы принести во всех std
с классическим using namespace std;
в верхней части файла, но также полезно , если вы используете что - то вроде std::this_thread::sleep_for()
много в одном файле или функции, но не везде, и никакие другие функции из пространства имен. Как всегда, не рекомендуется использовать его в файлах .h, иначе вы загрязните глобальное пространство имен.
Это не то же самое, что "переименование" выше, но часто действительно то, что нужно.
void (&NewName)(some_vector&, float, float, float, float) = OldName;
во время моей следующей регистрации.