-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Labels
Description
Issue description
There are circular includes in files leading to failing compilation of a very simple program
Your environment
- version of mlpack: 4.2.0
- operating system: Ubuntu 22.04
- compiler: GCC 11.3.0
- version of dependencies (Boost/Armadillo): 10.8.2
- any other environment information you think is relevant:
Steps to reproduce
Try compiling this simple one-line file sample.cpp:
#include <mlpack/methods/linear_regression.hpp>
Use the command: g++ sample.cpp -o sample -I mlpack-4.2.0/build/installdir/include -larmadillo
Expected behavior
The program compiles.
Actual behavior
Getting errors:
In file included from mlpack-4.2.0/build/installdir/include/mlpack/core/dists/dists.hpp:20,
from mlpack-4.2.0/build/installdir/include/mlpack/core.hpp:50,
from mlpack-4.2.0/build/installdir/include/mlpack/methods/linear_regression/linear_regression.hpp:16,
from mlpack-4.2.0/build/installdir/include/mlpack/methods/linear_regression.hpp:15,
from sample.cpp:1:
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution.hpp:34:3: error: ‘LinearRegression’ does not name a type
34 | LinearRegression rf;
| ^~~~~~~~~~~~~~~~
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution.hpp:84:9: error: ‘LinearRegression’ does not name a type
84 | const LinearRegression& Rf() const { return rf; }
| ^~~~~~~~~~~~~~~~
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution.hpp:86:3: error: ‘LinearRegression’ does not name a type
86 | LinearRegression& Rf() { return rf; }
| ^~~~~~~~~~~~~~~~
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution.hpp: In constructor ‘mlpack::RegressionDistribution::RegressionDistribution(const mat&, const rowvec&)’:
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution.hpp:66:5: error: ‘rf’ was not declared in this scope; did you mean ‘erf’?
66 | rf.Train(predictors, responses);
| ^~
| erf
In file included from mlpack-4.2.0/build/installdir/include/cereal/archives/binary.hpp:32,
from mlpack-4.2.0/build/installdir/include/mlpack/prereqs.hpp:17,
from mlpack-4.2.0/build/installdir/include/mlpack/core.hpp:35,
from mlpack-4.2.0/build/installdir/include/mlpack/methods/linear_regression/linear_regression.hpp:16,
from mlpack-4.2.0/build/installdir/include/mlpack/methods/linear_regression.hpp:15,
from sample.cpp:1:
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution.hpp: In member function ‘void mlpack::RegressionDistribution::serialize(Archive&, uint32_t)’:
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution.hpp:79:19: error: ‘rf’ was not declared in this scope; did you mean ‘erf’?
79 | ar(CEREAL_NVP(rf));
| ^~
mlpack-4.2.0/build/installdir/include/cereal/cereal.hpp:72:48: note: in definition of macro ‘CEREAL_NVP’
72 | #define CEREAL_NVP(T) ::cereal::make_nvp(#T, T)
| ^
In file included from mlpack-4.2.0/build/installdir/include/mlpack/core/dists/dists.hpp:20,
from mlpack-4.2.0/build/installdir/include/mlpack/core.hpp:50,
from mlpack-4.2.0/build/installdir/include/mlpack/methods/linear_regression/linear_regression.hpp:16,
from mlpack-4.2.0/build/installdir/include/mlpack/methods/linear_regression.hpp:15,
from sample.cpp:1:
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution.hpp: In member function ‘const vec& mlpack::RegressionDistribution::Parameters() const’:
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution.hpp:152:48: error: ‘rf’ was not declared in this scope; did you mean ‘erf’?
152 | const arma::vec& Parameters() const { return rf.Parameters(); }
| ^~
| erf
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution.hpp: In member function ‘size_t mlpack::RegressionDistribution::Dimensionality() const’:
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution.hpp:155:42: error: ‘rf’ was not declared in this scope; did you mean ‘erf’?
155 | size_t Dimensionality() const { return rf.Parameters().n_elem; }
| ^~
| erf
In file included from mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution.hpp:162,
from mlpack-4.2.0/build/installdir/include/mlpack/core/dists/dists.hpp:20,
from mlpack-4.2.0/build/installdir/include/mlpack/core.hpp:50,
from mlpack-4.2.0/build/installdir/include/mlpack/methods/linear_regression/linear_regression.hpp:16,
from mlpack-4.2.0/build/installdir/include/mlpack/methods/linear_regression.hpp:15,
from sample.cpp:1:
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution_impl.hpp: In member function ‘void mlpack::RegressionDistribution::Train(const mat&)’:
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution_impl.hpp:28:3: error: ‘LinearRegression’ was not declared in this scope
28 | LinearRegression lr(observations.rows(1, observations.n_rows - 1),
| ^~~~~~~~~~~~~~~~
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution_impl.hpp:30:3: error: ‘rf’ was not declared in this scope; did you mean ‘erf’?
30 | rf = lr;
| ^~
| erf
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution_impl.hpp:30:8: error: ‘lr’ was not declared in this scope
30 | rf = lr;
| ^~
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution_impl.hpp: In member function ‘void mlpack::RegressionDistribution::Train(const mat&, const rowvec&)’:
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution_impl.hpp:50:3: error: ‘LinearRegression’ was not declared in this scope
50 | LinearRegression lr(observations.rows(1, observations.n_rows - 1),
| ^~~~~~~~~~~~~~~~
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution_impl.hpp:52:3: error: ‘rf’ was not declared in this scope; did you mean ‘erf’?
52 | rf = lr;
| ^~
| erf
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution_impl.hpp:52:8: error: ‘lr’ was not declared in this scope
52 | rf = lr;
| ^~
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution_impl.hpp: In member function ‘double mlpack::RegressionDistribution::Probability(const vec&) const’:
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution_impl.hpp:67:3: error: ‘rf’ was not declared in this scope; did you mean ‘erf’?
67 | rf.Predict(observation.rows(1, observation.n_rows-1), fitted);
| ^~
| erf
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution_impl.hpp: In member function ‘void mlpack::RegressionDistribution::Predict(const mat&, arma::rowvec&) const’:
mlpack-4.2.0/build/installdir/include/mlpack/core/dists/regression_distribution_impl.hpp:82:3: error: ‘rf’ was not declared in this scope; did you mean ‘erf’?
82 | rf.Predict(points, predictions);
| ^~
| erf