Самый быстрый способ псевдонима имени функции - PullRequest
0 голосов
/ 16 марта 2020

Итак, я обертываю библиотеку математики GL (GLM), чтобы заменить текущую систему векторной математики моего игрового движка. Я хотел бы сохранить все соглашения об именах, которые я использовал до сих пор.

Для переименования классов это легко:

#include <glm/glm.hpp>
namespace BromineEngine {
    typedef glm::vec4 Vec4f;
    ...
}

Однако функция более сложная. Мне нужно убедиться, что функция все еще находится в пространстве имен * 1006. *

Я думал о создании макроса внутри пространства имен, но макросы afaik не учитывают пространства имен. Я также мог бы просто создавать шаблонные функции, которые передают аргументы, но это кажется медленным.

Любая помощь?

1 Ответ

3 голосов
/ 16 марта 2020

Вы можете использовать встроенные функции, чтобы получить то, что вы хотите. Например, с функцией с сигнатурой bool(int, int)

inline bool rename_f(int i, int j) {
    return glm::f(i, j);
}

Компилятор оптимизирует (не обязательно оптимизирует любые встроенные функции, но для таких простых, как это, почти гарантировано) код и замените вызов функции на его тело везде в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...