Для статистического пакета мне нужно включить библиотеку числовых вычислений, и я выбрал Armadillo. Я хочу сохранить все зависимости от Armadillo в одном файле-обертке (чтобы можно было легко переключать числовые библиотеки). На данный момент оболочка для Armadillo под названием mixt_LinAlg.h
содержит только:
#ifndef MIXT_LINALG_H
#define MIXT_LINALG_H
#include "mixt_Typedef.h"
#include <armadillo>
using namespace arma;
namespace mixt {
template<typename T>
using Matrix = Mat<T>;
template<typename T>
using Vector = Col<T>;
template<typename T>
using RowVector = Row<T>;
}
#endif // MIXT_LINALG_H
Таким образом, если я импортирую этот заголовок, у меня будет доступ к шаблонным классам Matrix
, Vector
и RowVector
, без непосредственного импорта Armadillo. Теперь в Armadillo есть функция arma::approx_equal
, которая, например, принимает два Col<T>
и возвращает bool
.
Если я просто вызываю эту функцию, используя approx_equal
вместо arma::approx_equal
, она компилируется с Clang на macOS. Но когда я компилирую его с GCC на Ubuntu, он жалуется, что не может найти approx_equal
.
Как мне сделать approx_equal
доступным для любого файла, включающего mixt_LinAlg.h
, без необходимости ссылаться на пространство имен arma
во включаемом файле?