fast-marching-method
fast-marching-method copied to clipboard
cmake --build . fails
I am using Ubuntu 18.04.
After cloning the fast-marching-method repository (HTTPS) to ~/fmm-git/fast_marching_method
I made a build directory ~fmm-git/fmm_build
and moved there. Then I executed
cmake ../fast_marching_method/test -DCMAKE_BUILD_TYPE=Release
That seemed to go well, as the build files were written. But
cmake --build .
Failed with pages of errors.
Can you provide any hints?
Thanks, Tim
I am running into the same issue on MacOS.
Any chance you can paste the error messages here?
This error appears to be the non-trivial one:
fast_marching_method.hpp: In constructor 'thinks::fast_marching_method::detail::VaryingSpeedEikonalSolverBase<T, N>::VaryingSpeedEikonalSolverBase(const std::array<_Tp, _Nm>&, const std::array<long unsigned int, N>&, const std::vector<_Tp>&)':
fast_marching_method.hpp:2027:7: error: class 'thinks::fast_marching_method::detail::VaryingSpeedEikonalSolverBase<T, N>' does not have any field named 'EikonalSolverBase'
: EikonalSolverBase(grid_spacing)
^~~~~~~~~~~~~~~~~
I was able to avoid the rest by enabling -fpermissive.
Thinks:
Sorry for misunderstanding what "here" meant (in your comment last week, which I read as an email.)
I post about 25% of the error message ("tome") below, by capturing it from the screen, and pasting it into a editor (to keep). Then copying from the editor. If there is a way to make it more readable to you, please let me know. I tried to post the entire message, but that created a comment that is longer than allowed.
Aside: I did read the comment by ubra-scientia wrt -fpermissive, but I decided to send you the error message which you requested.
Thanks, Tim
The base directory for this fmm project is: tscale/fmm-git/ which has two directories: fast-marching-method fmm-build
After moving into the fmm-build directory:
tscale:~/fmm-git/fast-marching-method$ cd ../fmm-build/
tscale:~/fmm-git/fmm-build$ cmake ../fast-marching-method/test -DCMAKE_BUILD_TYPE=Release
-- Build type: Release
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tscale/fmm-git/fmm-build
tscale:~/fmm-git/fmm-build$ cmake --build .
[ 75%] Built target gtest
[ 75%] Built target gtest_main
[ 75%] Building CXX object CMakeFiles/fast-marching-method-test.dir/eikonal_solvers_test.cpp.o
In file included from /home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:23:0:
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp: In constructor ‘thinks::fast_marching_method::detail::VaryingSpeedEikonalSolverBase<T, N>::VaryingSpeedEikonalSolverBase(const std::array<Tp, Nm>&, const std::array<long unsigned int, N>&, const std::vector<T>&)’:
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp:2027:7: error: class ‘thinks::fast_marching_method::detail::VaryingSpeedEikonalSolverBase<T, N>’ does not have any field named ‘EikonalSolverBase’
: EikonalSolverBase(grid_spacing)
^~~~~~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp: In member function ‘T thinks::fast_marching_method::UniformSpeedEikonalSolver<T, N>::Solve(const std::array<int, N>&, const thinks::fast_marching_method::detail::Grid<T, N>&) const’:
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp:2078:7: error: there are no arguments to ‘uniform_speed’ that depend on a template parameter, so a declaration of ‘uniform_speed’ must be available [-fpermissive]
uniform_speed(),
^~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp:2078:7: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp:2079:7: error: there are no arguments to ‘grid_spacing’ that depend on a template parameter, so a declaration of ‘grid_spacing’ must be available [-fpermissive]
grid_spacing());
^~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp: In member function ‘T thinks::fast_marching_method::HighAccuracyUniformSpeedEikonalSolver<T, N>::Solve(const std::array<int, N>&, const thinks::fast_marching_method::detail::Grid<T, N>&) const’:
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp:2108:7: error: there are no arguments to ‘uniform_speed’ that depend on a template parameter, so a declaration of ‘uniform_speed’ must be available [-fpermissive]
uniform_speed(),
^~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp:2109:7: error: there are no arguments to ‘grid_spacing’ that depend on a template parameter, so a declaration of ‘grid_spacing’ must be available [-fpermissive]
grid_spacing());
^~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp: In member function ‘T thinks::fast_marching_method::VaryingSpeedEikonalSolver<T, N>::Solve(const std::array<int, N>&, const thinks::fast_marching_method::detail::Grid<T, N>&) const’:
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp:2140:7: error: there are no arguments to ‘grid_spacing’ that depend on a template parameter, so a declaration of ‘grid_spacing’ must be available [-fpermissive]
grid_spacing());
^~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp: In member function ‘T thinks::fast_marching_method::HighAccuracyVaryingSpeedEikonalSolver<T, N>::Solve(const std::array<int, N>&, const thinks::fast_marching_method::detail::Grid<T, N>&) const’:
/home/tscale/fmm-git/fast-marching-method/test/../include/thinks/fast_marching_method/fast_marching_method.hpp:2172:7: error: there are no arguments to ‘grid_spacing’ that depend on a template parameter, so a declaration of ‘grid_spacing’ must be available [-fpermissive]
grid_spacing());
^~~~~~~~~~~~
In file included from /home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:24:0:
/home/tscale/fmm-git/fast-marching-method/test/util.hpp: In function ‘std::array<std::array<int, N>, (util::static_pow(3, N) - 1)> util::VertexNeighborOffsets()’:
/home/tscale/fmm-git/fast-marching-method/test/util.hpp:269:21: error: ‘IndexIterator’ was not declared in this scope
auto index_iter = IndexIterator<N>(index_size);
^~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::UniformSpeedEikonalSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:89:11: error: need ‘typename’ before ‘{anonymous}::UniformSpeedEikonalSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::UniformSpeedEikonalSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam_>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:92:42: error: ‘ScalarType’ was not declared in this scope
typedef fmm::UniformSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:92:64: error: template argument 1 is invalid
typedef fmm::UniformSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:96:65: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, long unsigned int Nm> struct std::array’
auto const invalid_grid_spacing_elements = array<ScalarType, 4>{{
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:96:65: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:103:50: error: range-based ‘for’ expression of type ‘auto’ has incomplete type
for (auto const invalid_grid_spacing_element : invalid_grid_spacing_elements)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:106:67: error: expected ‘)’ before ‘{’ token
auto grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:108:36: error: expected ‘,’ or ‘;’ before ‘{’ token
auto const speed = ScalarType{1};
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::UniformSpeedEikonalSolverTest_InvalidSpeedThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:131:11: error: need ‘typename’ before ‘{anonymous}::UniformSpeedEikonalSolverTest_InvalidSpeedThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::UniformSpeedEikonalSolverTest_InvalidSpeedThrows_Test<gtest_TypeParam_>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:134:42: error: ‘ScalarType’ was not declared in this scope
typedef fmm::UniformSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:134:64: error: template argument 1 is invalid
typedef fmm::UniformSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:138:50: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, long unsigned int Nm> struct std::array’
auto const invalid_speeds = array<ScalarType, 4>{{
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:138:50: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:145:35: error: range-based ‘for’ expression of type ‘auto’ has incomplete type
for (auto const invalid_speed : invalid_speeds) {
^~~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:146:71: error: expected ‘)’ before ‘{’ token
auto const grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::HighAccuracyUniformSpeedEikonalSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:171:11: error: need ‘typename’ before ‘{anonymous}::HighAccuracyUniformSpeedEikonalSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::HighAccuracyUniformSpeedEikonalSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam_>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:174:54: error: ‘ScalarType’ was not declared in this scope
typedef fmm::HighAccuracyUniformSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:174:76: error: template argument 1 is invalid
typedef fmm::HighAccuracyUniformSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:178:65: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, long unsigned int Nm> struct std::array’
auto const invalid_grid_spacing_elements = array<ScalarType, 4>{{
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:178:65: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:185:50: error: range-based ‘for’ expression of type ‘auto’ has incomplete type
for (auto const invalid_grid_spacing_element : invalid_grid_spacing_elements)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:188:67: error: expected ‘)’ before ‘{’ token
auto grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:190:36: error: expected ‘,’ or ‘;’ before ‘{’ token
auto const speed = ScalarType{1};
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::HighAccuracyUniformSpeedEikonalSolverTest_InvalidSpeedThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:213:11: error: need ‘typename’ before ‘{anonymous}::HighAccuracyUniformSpeedEikonalSolverTest_InvalidSpeedThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::HighAccuracyUniformSpeedEikonalSolverTest_InvalidSpeedThrows_Test<gtest_TypeParam_>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:216:54: error: ‘ScalarType’ was not declared in this scope
typedef fmm::HighAccuracyUniformSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:216:76: error: template argument 1 is invalid
typedef fmm::HighAccuracyUniformSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:220:50: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, long unsigned int Nm> struct std::array’
auto const invalid_speeds = array<ScalarType, 4>{{
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:220:50: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:227:35: error: range-based ‘for’ expression of type ‘auto’ has incomplete type
for (auto const invalid_speed : invalid_speeds) {
^~~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:228:71: error: expected ‘)’ before ‘{’ token
auto const grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::VaryingSpeedEikonalSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:253:11: error: need ‘typename’ before ‘{anonymous}::VaryingSpeedEikonalSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::VaryingSpeedEikonalSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam_>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:256:42: error: ‘ScalarType’ was not declared in this scope
typedef fmm::VaryingSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:256:64: error: template argument 1 is invalid
typedef fmm::VaryingSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:260:65: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, long unsigned int Nm> struct std::array’
auto const invalid_grid_spacing_elements = array<ScalarType, 4>{{
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:260:65: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:267:50: error: range-based ‘for’ expression of type ‘auto’ has incomplete type
for (auto const invalid_grid_spacing_element : invalid_grid_spacing_elements)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:270:67: error: expected ‘)’ before ‘{’ token
auto grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:274:26: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, class Alloc> class std::vector’
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:274:26: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:274:26: error: template argument 2 is invalid
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:274:73: error: expected ‘)’ before ‘{’ token
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::VaryingSpeedEikonalSolverTest_InvalidSpeedThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:298:11: error: need ‘typename’ before ‘{anonymous}::VaryingSpeedEikonalSolverTest_InvalidSpeedThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::VaryingSpeedEikonalSolverTest_InvalidSpeedThrows_Test<gtest_TypeParam>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:301:42: error: ‘ScalarType’ was not declared in this scope
typedef fmm::VaryingSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:301:64: error: template argument 1 is invalid
typedef fmm::VaryingSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:305:50: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, long unsigned int Nm> struct std::array’
auto const invalid_speeds = array<ScalarType, 4>{{
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:305:50: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:312:35: error: range-based ‘for’ expression of type ‘auto’ has incomplete type
for (auto const invalid_speed : invalid_speeds) {
^~~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:313:71: error: expected ‘)’ before ‘{’ token
auto const grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:318:24: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, class Alloc> class std::vector’
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:318:24: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:318:24: error: template argument 2 is invalid
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:318:71: error: expected ‘)’ before ‘{’ token
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::VaryingSpeedEikonalSolverTest_InvalidSpeedBufferThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:341:11: error: need ‘typename’ before ‘{anonymous}::VaryingSpeedEikonalSolverTest_InvalidSpeedBufferThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::VaryingSpeedEikonalSolverTest_InvalidSpeedBufferThrows_Test<gtest_TypeParam>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:344:42: error: ‘ScalarType’ was not declared in this scope
typedef fmm::VaryingSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:344:64: error: template argument 1 is invalid
typedef fmm::VaryingSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:348:69: error: expected ‘)’ before ‘{’ token
auto const grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:353:22: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, class Alloc> class std::vector’
vector<ScalarType>(util::LinearSize(speed_grid_size) - 1, ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:353:22: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:353:22: error: template argument 2 is invalid
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:353:73: error: expected ‘)’ before ‘{’ token
vector<ScalarType>(util::LinearSize(speed_grid_size) - 1, ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::VaryingSpeedEikonalSolverTest_InvalidSpeedGridSizeThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:375:11: error: need ‘typename’ before ‘{anonymous}::VaryingSpeedEikonalSolverTest_InvalidSpeedGridSizeThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::VaryingSpeedEikonalSolverTest_InvalidSpeedGridSizeThrows_Test<gtest_TypeParam>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:378:42: error: ‘ScalarType’ was not declared in this scope
typedef fmm::VaryingSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:378:64: error: template argument 1 is invalid
typedef fmm::VaryingSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:382:69: error: expected ‘)’ before ‘{’ token
auto const grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:387:24: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, class Alloc> class std::vector’
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:387:24: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:387:24: error: template argument 2 is invalid
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:387:71: error: expected ‘)’ before ‘{’ token
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::VaryingSpeedEikonalSolverTest_IndexOutsideSpeedGridThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:410:11: error: need ‘typename’ before ‘{anonymous}::VaryingSpeedEikonalSolverTest_IndexOutsideSpeedGridThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::VaryingSpeedEikonalSolverTest_IndexOutsideSpeedGridThrows_Test<gtest_TypeParam>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:413:42: error: ‘ScalarType’ was not declared in this scope
typedef fmm::VaryingSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:413:64: error: template argument 1 is invalid
typedef fmm::VaryingSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:418:69: error: expected ‘)’ before ‘{’ token
auto const grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:423:22: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, class Alloc> class std::vector’
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:423:22: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:423:22: error: template argument 2 is invalid
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:423:69: error: expected ‘)’ before ‘{’ token
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:428:52: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, class Alloc> class std::vector’
auto const boundary_distances = vector<ScalarType>(1, ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:428:52: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:428:52: error: template argument 2 is invalid
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:428:67: error: expected ‘)’ before ‘{’ token
auto const boundary_distances = vector<ScalarType>(1, ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:452:11: error: need ‘typename’ before ‘{anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:455:54: error: ‘ScalarType’ was not declared in this scope
typedef fmm::HighAccuracyVaryingSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:455:76: error: template argument 1 is invalid
typedef fmm::HighAccuracyVaryingSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:459:65: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, long unsigned int Nm> struct std::array’
auto const invalid_grid_spacing_elements = array<ScalarType, 4>{{
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:459:65: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:466:50: error: range-based ‘for’ expression of type ‘auto’ has incomplete type
for (auto const invalid_grid_spacing_element : invalid_grid_spacing_elements)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:469:67: error: expected ‘)’ before ‘{’ token
auto grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:473:26: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, class Alloc> class std::vector’
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:473:26: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:473:26: error: template argument 2 is invalid
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:473:73: error: expected ‘)’ before ‘{’ token
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_InvalidSpeedThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:497:11: error: need ‘typename’ before ‘{anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_InvalidSpeedThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_InvalidSpeedThrows_Test<gtest_TypeParam>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:500:54: error: ‘ScalarType’ was not declared in this scope
typedef fmm::HighAccuracyVaryingSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:500:76: error: template argument 1 is invalid
typedef fmm::HighAccuracyVaryingSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:504:50: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, long unsigned int Nm> struct std::array’
auto const invalid_speeds = array<ScalarType, 4>{{
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:504:50: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:511:35: error: range-based ‘for’ expression of type ‘auto’ has incomplete type
for (auto const invalid_speed : invalid_speeds) {
^~~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:512:71: error: expected ‘)’ before ‘{’ token
auto const grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:517:24: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, class Alloc> class std::vector’
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:517:24: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:517:24: error: template argument 2 is invalid
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:517:71: error: expected ‘)’ before ‘{’ token
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_InvalidSpeedBufferThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:540:11: error: need ‘typename’ before ‘{anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_InvalidSpeedBufferThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_InvalidSpeedBufferThrows_Test<gtest_TypeParam>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:543:54: error: ‘ScalarType’ was not declared in this scope
typedef fmm::HighAccuracyVaryingSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:543:76: error: template argument 1 is invalid
typedef fmm::HighAccuracyVaryingSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:547:69: error: expected ‘)’ before ‘{’ token
auto const grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:551:22: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, class Alloc> class std::vector’
vector<ScalarType>(util::LinearSize(speed_grid_size) - 1, ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:551:22: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:551:22: error: template argument 2 is invalid
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:551:73: error: expected ‘)’ before ‘{’ token
vector<ScalarType>(util::LinearSize(speed_grid_size) - 1, ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_InvalidSpeedGridSizeThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:573:11: error: need ‘typename’ before ‘{anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_InvalidSpeedGridSizeThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_InvalidSpeedGridSizeThrows_Test<gtest_TypeParam>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:576:54: error: ‘ScalarType’ was not declared in this scope
typedef fmm::HighAccuracyVaryingSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:576:76: error: template argument 1 is invalid
typedef fmm::HighAccuracyVaryingSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:580:69: error: expected ‘)’ before ‘{’ token
auto const grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:585:24: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, class Alloc> class std::vector’
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:585:24: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:585:24: error: template argument 2 is invalid
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:585:71: error: expected ‘)’ before ‘{’ token
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_IndexOutsideSpeedGridThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:607:11: error: need ‘typename’ before ‘{anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_IndexOutsideSpeedGridThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::HighAccuracyVaryingSpeedEikonalSolverTest_IndexOutsideSpeedGridThrows_Test<gtest_TypeParam>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:610:54: error: ‘ScalarType’ was not declared in this scope
typedef fmm::HighAccuracyVaryingSpeedEikonalSolver<ScalarType, kDimension>
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:610:76: error: template argument 1 is invalid
typedef fmm::HighAccuracyVaryingSpeedEikonalSolver<ScalarType, kDimension>
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:615:69: error: expected ‘)’ before ‘{’ token
auto const grid_spacing = util::FilledArray<kDimension>(ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:619:22: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, class Alloc> class std::vector’
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:619:22: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:619:22: error: template argument 2 is invalid
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:619:69: error: expected ‘)’ before ‘{’ token
vector<ScalarType>(util::LinearSize(speed_grid_size), ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:624:52: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, class Alloc> class std::vector’
auto const boundary_distances = vector<ScalarType>(1, ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:624:52: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:624:52: error: template argument 2 is invalid
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:624:67: error: expected ‘)’ before ‘{’ token
auto const boundary_distances = vector<ScalarType>(1, ScalarType{1});
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In member function ‘virtual void {anonymous}::DistanceSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TestBody()’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:648:11: error: need ‘typename’ before ‘{anonymous}::DistanceSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TypeParam::ScalarType’ because ‘{anonymous}::DistanceSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TypeParam’ is a dependent scope
typedef TypeParam::ScalarType ScalarType;
^~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:651:31: error: ‘ScalarType’ was not declared in this scope
typedef fmm::DistanceSolver<ScalarType, kDimension> EikonalSolverType;
^~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:651:53: error: template argument 1 is invalid
typedef fmm::DistanceSolver<ScalarType, kDimension> EikonalSolverType;
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:654:65: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Tp, long unsigned int Nm> struct std::array’
auto const invalid_grid_spacing_elements = array<ScalarType, 4>{{
^
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:654:65: note: expected a type, got ‘ScalarType’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:661:50: error: range-based ‘for’ expression of type ‘auto’ has incomplete type
for (auto const invalid_grid_spacing_element : invalid_grid_spacing_elements)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp: In instantiation of ‘{anonymous}::DistanceSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TestBody()::<lambda()> [with gtest_TypeParam = util::ScalarDimensionPair<double, 4>]’:
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:674:57: required from ‘struct {anonymous}::DistanceSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam>::TestBody() [with gtest_TypeParam = util::ScalarDimensionPair<double, 4>]::<lambda()>’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:672:61: required from ‘void {anonymous}::DistanceSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = util::ScalarDimensionPair<double, 4>]’
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:684:1: required from here
/home/tscale/fmm-git/fast-marching-method/test/eikonal_solvers_test.cpp:674:57: error: using invalid field ‘{anonymous}::DistanceSolverTest_InvalidGridSpacingThrows_Test<gtest_TypeParam_>::TestBody()::<lambda()>::
Confirmed, the tests don't build.
Branch: master
Compiler: gcc 8.4.0
Used CMake flag -DCMAKE_CXX_STANDARD=17 to manually confirm the C++ standard.
I spent about an hour working through all the compiler errors caused by eikonal_solvers_test.cpp. Some common flavors:
- Missing
typenamekeyword - Out-of-order declarations (functions called before being declared, such as
ToStringandThrowIfZeroElementInSize) - Using unqualified names (
uniform_speed()instead ofdetail::UniformSpeedEikonalSolverBase<T,N>::uniform_speed())
After all that, the tests only validate whether exceptions are thrown on misconfiguration. I'm honestly pretty disappointed -- I had high hopes for this library, as the technical discussion of FMM is spectacular. A robust, header-only FMM library would be perfect for my project. Please fix this!
Hi Connor,
There are a few issues with this repo, I think you have only touched on some of them. It is indeed unfortunate that this repo promises more than it delivers, in the sense that the documentation is better than both the code and the build system.
I think that adding some Github actions would be really helpful, similar to how I have done it here: https://github.com/thinks/poisson-disk-sampling. It becomes much more clear what is supported and not.
I need to consider some options at this point:
- I could put a disclaimer at the top of the readme to be clear about the limitations.
- I could take the repo down, since there is a risk that people waste their time trying to use it.
- I could add Github actions (which then would also presumably lead to having to "fix" a lot of the code issues).
- I could just fix the current issues (and have it break down again at some point in the future).
I will need to consider these options in the near future.
Best,
T
On Fri, 16 Oct 2020 at 23:11, Connor Lawson [email protected] wrote:
Confirmed, the tests don't build.
Branch: master Compiler: gcc 8.4.0 Used CMake flag -DCMAKE_CXX_STANDARD=17 to manually confirm the C++ standard.
I spent about an hour working through all the compiler errors caused by eikonal_solvers_test.cpp. Some common flavors:
- Missing typename keyword
- Out-of-order declarations (functions called before being declared, such as ToString and ThrowIfZeroElementInSize)
- Using unqualified names (uniform_speed() instead of detail::UniformSpeedEikonalSolverBase<T,N>::uniform_speed())
After all that, the tests only validate whether exceptions are thrown on misconfiguration. I'm honestly pretty disappointed -- I had high hopes for this library, as the technical discussion of FMM is spectacular. A robust, header-only FMM library would be perfect for my project. Please fix this!
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/thinks/fast-marching-method/issues/3#issuecomment-710641063, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAHSRVZUUZIZMMKDNB7PSLDSLCZJTANCNFSM4KBQPREQ .
Hey @thinks,
I'm happy to push up a pull request with the patches I mentioned above, and to help validate/work on the build system in my environment if that would be useful to you. I don't know anything about Github actions, so I'm not sure how much I can help in that realm.
Can you clarify what the original target environment was (C++ version, compiler+version, OS), and the desired target now if it's different? I assumed C++17 based on the most recent commit dates and because it seemed at rough glance to complain the least by a small margin.
Cheers, Connor
Github actions allow one to have a CI system in place, that builds the repo and runs tests on every commit (or PR, or however you set it up). It can build on multiple platforms with multiple compilers. It is a relatively new thing, but it is of course very powerful. If I wanted to seriously revive this project that is the route I would take. It is kind of you to offer to submit a PR, but at this point I think you are better off forking the repo and making your fixes there. If I find the time to do any further work on this I will likely be starting almost from scratch anyway.
The intended target environment was Windows, MSVC, probably C++14 or so. I guess C++17 was kinda bleeding edge at the time and I don't think I was using any C++17 specific constructs in the code, but it's been a while.
On Wed, 21 Oct 2020 at 14:35, Connor Lawson [email protected] wrote:
Hey @thinks https://github.com/thinks,
I'm happy to push up a pull request with the patches I mentioned above, and to help validate/work on the build system in my environment if that would be useful to you. I don't know anything about Github actions, so I'm not sure how much I can help in that realm.
Can you clarify what the original target environment was (C++ version, compiler+version, OS), and the desired target now if it's different? I assumed C++17 based on the most recent commit dates and because it seemed at rough glance to complain the least by a small margin.
Cheers, Connor
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/thinks/fast-marching-method/issues/3#issuecomment-713536836, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAHSRV4ATVNSH5EQ3EHFKVTSL3IQNANCNFSM4KBQPREQ .