Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

error: ‘variate_generator’ is not a member of ‘std’ #5994

Closed
jiapei100 opened this issue Mar 30, 2024 · 2 comments · Fixed by #5959
Closed

error: ‘variate_generator’ is not a member of ‘std’ #5994

jiapei100 opened this issue Mar 30, 2024 · 2 comments · Fixed by #5959
Labels
kind: compile error Type of issue

Comments

@jiapei100
Copy link

Describe the error

[ 55%] Built target pcl_tracking
make  -f recognition/CMakeFiles/pcl_recognition.dir/build.make recognition/CMakeFiles/pcl_recognition.dir/depend
make[2]: Entering directory '....../pcl/build'
cd ....../pcl/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" ....../pcl ....../pcl/recognition ....../pcl/build ....../pcl/build/recognition ....../pcl/build/recognition/CMakeFiles/pcl_recognition.dir/DependInfo.cmake "--color="
make[2]: Leaving directory '....../pcl/build'
make  -f recognition/CMakeFiles/pcl_recognition.dir/build.make recognition/CMakeFiles/pcl_recognition.dir/build
make[2]: Entering directory '....../pcl/build'
cd ....../pcl/build/recognition && ....../pcl/cmake/custom_output.sh /usr/bin/c++ -DBOOST_ATOMIC_DYN_LINK -DBOOST_ATOMIC_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_FILESYSTEM_NO_LIB -DBOOST_IOSTREAMS_DYN_LINK -DBOOST_IOSTREAMS_NO_LIB -DELPP_NO_DEFAULT_LOG_FILE -DPCLAPI_EXPORTS -I....../pcl/build/include -I....../pcl/common/include -I....../pcl/io/include -I....../pcl/search/include -I....../pcl/kdtree/include -I....../pcl/octree/include -I....../pcl/features/include -I....../pcl/filters/include -I....../pcl/registration/include -I....../pcl/sample_consensus/include -I....../pcl/ml/include -I....../pcl/recognition/include -isystem /usr/local/include/metslib-0.5 -isystem /usr/local/lib/metslib-0.5/include -isystem /usr/include/eigen3 -Wabi=11 -Wall -Wextra -fno-strict-aliasing -msse4.2 -mfpmath=sse -march=native -mavx2 -fopenmp -O2 -g -DNDEBUG -std=c++14 -fPIC -fopenmp -MD -MT recognition/CMakeFiles/pcl_recognition.dir/src/hv/hv_go.cpp.o -MF CMakeFiles/pcl_recognition.dir/src/hv/hv_go.cpp.o.d -o CMakeFiles/pcl_recognition.dir/src/hv/hv_go.cpp.o -c ....../pcl/recognition/src/hv/hv_go.cpp
In file included from /usr/local/include/metslib-0.5/metslib/mets.hh:129,
                 from ....../pcl/recognition/include/pcl/recognition/hv/hv_go.h:24,
                 from ....../pcl/recognition/include/pcl/recognition/impl/hv/hv_go.hpp:40,
                 from ....../pcl/recognition/src/hv/hv_go.cpp:37:
/usr/local/include/metslib-0.5/metslib/model.hh: In function ‘void mets::random_shuffle(permutation_problem&, random_generator&)’:
/usr/local/include/metslib-0.5/metslib/model.hh:249:10: error: ‘variate_generator’ is not a member of ‘std’
  249 |     std::variate_generator<random_generator&,
      |          ^~~~~~~~~~~~~~~~~
/usr/local/include/metslib-0.5/metslib/model.hh:249:10: note: suggested alternatives:
In file included from ....../pcl/recognition/include/pcl/recognition/hv/hv_go.h:18:
/usr/include/boost/random/variate_generator.hpp:51:7: note:   ‘boost::random::variate_generator’
   51 | class variate_generator
      |       ^~~~~~~~~~~~~~~~~
/usr/include/boost/random/variate_generator.hpp:51:7: note:   ‘boost::random::variate_generator’
/usr/local/include/metslib-0.5/metslib/model.hh:249:44: error: expected primary-expression before ‘&’ token
  249 |     std::variate_generator<random_generator&,
      |                                            ^
/usr/local/include/metslib-0.5/metslib/model.hh:249:45: error: expected primary-expression before ‘,’ token
  249 |     std::variate_generator<random_generator&,
      |                                             ^
/usr/local/include/metslib-0.5/metslib/model.hh:250:45: error: expected primary-expression before ‘>’ token
  250 |       std::uniform_int_distribution<size_t> >gen(rng, unigen);
      |                                             ^
/usr/local/include/metslib-0.5/metslib/model.hh:256:55: error: ‘gen’ was not declared in this scope; did you mean ‘get’?
  256 |     std::random_shuffle(p.pi_m.begin(), p.pi_m.end(), gen);
      |                                                       ^~~
      |                                                       get
In file included from /usr/local/include/metslib-0.5/metslib/mets.hh:134:
/usr/local/include/metslib-0.5/metslib/simulated-annealing.hh: At global scope:
/usr/local/include/metslib-0.5/metslib/simulated-annealing.hh:137:10: error: ‘uniform_real’ in namespace ‘std’ does not name a template type
  137 |     std::uniform_real<double> ureal;
      |          ^~~~~~~~~~~~
/usr/local/include/metslib-0.5/metslib/simulated-annealing.hh:139:10: error: ‘variate_generator’ in namespace ‘std’ does not name a template type
  139 |     std::variate_generator< std::mt19937, std::uniform_real<double> > gen;
      |          ^~~~~~~~~~~~~~~~~
/usr/local/include/metslib-0.5/metslib/simulated-annealing.hh: In constructor ‘mets::simulated_annealing<move_manager_type>::simulated_annealing(mets::evaluable_solution&, mets::solution_recorder&, move_manager_t&, mets::termination_criteria_chain&, mets::abstract_cooling_schedule&, double, double, double)’:
/usr/local/include/metslib-0.5/metslib/simulated-annealing.hh:195:5: error: class ‘mets::simulated_annealing<move_manager_type>’ does not have any field named ‘ureal’
  195 |     ureal(0.0,1.0), rng(), gen(rng, ureal)
      |     ^~~~~
/usr/local/include/metslib-0.5/metslib/simulated-annealing.hh:195:28: error: class ‘mets::simulated_annealing<move_manager_type>’ does not have any field named ‘gen’
  195 |     ureal(0.0,1.0), rng(), gen(rng, ureal)
      |                            ^~~
/usr/local/include/metslib-0.5/metslib/simulated-annealing.hh:195:37: error: ‘ureal’ was not declared in this scope
  195 |     ureal(0.0,1.0), rng(), gen(rng, ureal)
      |                                     ^~~~~
/usr/local/include/metslib-0.5/metslib/simulated-annealing.hh: In member function ‘virtual void mets::simulated_annealing<move_manager_type>::search()’:
/usr/local/include/metslib-0.5/metslib/simulated-annealing.hh:225:27: error: there are no arguments to ‘gen’ that depend on a template parameter, so a declaration of ‘gen’ must be available [-fpermissive]
  225 |           if(delta < 0 || gen() < exp(-delta/(K_m*current_temp_m)))
      |                           ^~~
/usr/local/include/metslib-0.5/metslib/simulated-annealing.hh:225:27: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
....../pcl/recognition/include/pcl/recognition/impl/hv/hv_go.hpp: In instantiation of ‘void pcl::GlobalHypothesesVerification<ModelT, SceneT>::SAOptimize(std::vector<int, std::allocator<int> >&, std::vector<bool>&) [with ModelT = pcl::PointXYZ; SceneT = pcl::PointXYZ]’:
....../pcl/recognition/src/hv/hv_go.cpp:42:1:   required from here
....../pcl/recognition/include/pcl/recognition/impl/hv/hv_go.hpp:456:6: error: ‘class mets::simulated_annealing<pcl::GlobalHypothesesVerification<pcl::PointXYZ, pcl::PointXYZ>::move_manager>’ has no member named ‘setApplyAndEvaluate’
  456 |   sa.setApplyAndEvaluate(true);
      |   ~~~^~~~~~~~~~~~~~~~~~~
....../pcl/recognition/include/pcl/recognition/impl/hv/hv_go.hpp: In instantiation of ‘void pcl::GlobalHypothesesVerification<ModelT, SceneT>::SAOptimize(std::vector<int, std::allocator<int> >&, std::vector<bool>&) [with ModelT = pcl::PointXYZRGB; SceneT = pcl::PointXYZRGB]’:
....../pcl/recognition/src/hv/hv_go.cpp:43:1:   required from here
....../pcl/recognition/include/pcl/recognition/impl/hv/hv_go.hpp:456:6: error: ‘class mets::simulated_annealing<pcl::GlobalHypothesesVerification<pcl::PointXYZRGB, pcl::PointXYZRGB>::move_manager>’ has no member named ‘setApplyAndEvaluate’
....../pcl/recognition/include/pcl/recognition/impl/hv/hv_go.hpp: In instantiation of ‘void pcl::GlobalHypothesesVerification<ModelT, SceneT>::SAOptimize(std::vector<int, std::allocator<int> >&, std::vector<bool>&) [with ModelT = pcl::PointXYZRGBA; SceneT = pcl::PointXYZRGBA]’:
....../pcl/recognition/src/hv/hv_go.cpp:44:1:   required from here
....../pcl/recognition/include/pcl/recognition/impl/hv/hv_go.hpp:456:6: error: ‘class mets::simulated_annealing<pcl::GlobalHypothesesVerification<pcl::PointXYZRGBA, pcl::PointXYZRGBA>::move_manager>’ has no member named ‘setApplyAndEvaluate’
 *** Built object hv_go.cpp.o from ....../pcl/recognition/src/hv/hv_go.cpp in 7802 ms.
cd ....../pcl/build/recognition && /usr/bin/cmake -E cmake_link_script CMakeFiles/pcl_recognition.dir/link.txt --verbose=1
/usr/bin/c++ -fPIC  -Wabi=11 -Wall -Wextra -fno-strict-aliasing -msse4.2 -mfpmath=sse -march=native -mavx2 -fopenmp -O2 -g -DNDEBUG -Wl,--as-needed -shared -Wl,-soname,libpcl_recognition.so.1.14 -o ../lib/libpcl_recognition.so.1.14.0.99 CMakeFiles/pcl_recognition.dir/src/linemod.cpp.o CMakeFiles/pcl_recognition.dir/src/quantizable_modality.cpp.o CMakeFiles/pcl_recognition.dir/src/dotmod.cpp.o CMakeFiles/pcl_recognition.dir/src/mask_map.cpp.o CMakeFiles/pcl_recognition.dir/src/hv/occlusion_reasoning.cpp.o CMakeFiles/pcl_recognition.dir/src/hv/hv_papazov.cpp.o CMakeFiles/pcl_recognition.dir/src/hv/hv_go.cpp.o CMakeFiles/pcl_recognition.dir/src/hv/greedy_verification.cpp.o CMakeFiles/pcl_recognition.dir/src/cg/hough_3d.cpp.o CMakeFiles/pcl_recognition.dir/src/cg/geometric_consistency.cpp.o CMakeFiles/pcl_recognition.dir/src/ransac_based/obj_rec_ransac.cpp.o CMakeFiles/pcl_recognition.dir/src/ransac_based/model_library.cpp.o CMakeFiles/pcl_recognition.dir/src/ransac_based/orr_octree.cpp.o CMakeFiles/pcl_recognition.dir/src/ransac_based/orr_octree_zprojection.cpp.o CMakeFiles/pcl_recognition.dir/src/face_detection/face_detector_data_provider.cpp.o CMakeFiles/pcl_recognition.dir/src/face_detection/rf_face_detector_trainer.cpp.o CMakeFiles/pcl_recognition.dir/src/implicit_shape_model.cpp.o  -Wl,-rpath,....../pcl/build/lib:/usr/local/lib: -lm -latomic ../lib/libpcl_registration.so.1.14.0.99 ../lib/libpcl_ml.so.1.14.0.99 ../lib/libpcl_io.so.1.14.0.99 ../lib/libpcl_features.so.1.14.0.99 ../lib/libpcl_filters.so.1.14.0.99 ../lib/libpcl_search.so.1.14.0.99 ../lib/libpcl_kdtree.so.1.14.0.99 ../lib/libpcl_octree.so.1.14.0.99 /usr/local/lib/libflann_cpp.so.1.9.2 /usr/lib/x86_64-linux-gnu/liblz4.so ../lib/libpcl_sample_consensus.so.1.14.0.99 /usr/lib/libboost_iostreams.so.1.84.0 ../lib/libpcl_io_ply.so.1.14.0.99 ../lib/libpcl_common.so.1.14.0.99 /usr/lib/gcc/x86_64-linux-gnu/12/libgomp.so /usr/lib/x86_64-linux-gnu/libpthread.a -lm -latomic /usr/lib/libboost_filesystem.so.1.84.0 /usr/lib/libboost_atomic.so.1.84.0 /usr/lib/x86_64-linux-gnu/libpng.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libusb-1.0.so /usr/local/lib/librealsense2.so.2.54.2 /usr/local/lib/librsutils.a /usr/lib/x86_64-linux-gnu/libpcap.so 
/usr/bin/ld: cannot find CMakeFiles/pcl_recognition.dir/src/hv/hv_go.cpp.o: No such file or directory
collect2: error: ld returned 1 exit status
make[2]: *** [recognition/CMakeFiles/pcl_recognition.dir/build.make:359: lib/libpcl_recognition.so.1.14.0.99] Error 1
make[2]: Leaving directory '....../pcl/build'
make[1]: *** [CMakeFiles/Makefile2:1610: recognition/CMakeFiles/pcl_recognition.dir/all] Error 2
make[1]: Leaving directory '....../pcl/build'
make: *** [Makefile:159: all] Error 2

To Reproduce

It looks it has something to do with metslib . Even with metslib newest release, it's still buggy.

It's absolutely related to METSLIB_HAVE_UNORDERED_MAP.

Your Environment (please complete the following information):

  • OS: Ubuntu 22.04
  • Compiler:
~ gcc --version
gcc (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • PCL Version : 1.14.0
  • PCL Type: Compiled from source

If PCL was compiled from source or failure in compiling PCL itself:

  • GPU, Kinfu, CUDA enabled? GPU/CUDA enabled, but Kinfu NO.
  • This ERROR clearly relates to BUILD_recognition.
@jiapei100 jiapei100 added kind: compile error Type of issue status: triage Labels incomplete labels Mar 30, 2024
@jiapei100 jiapei100 changed the title [compile error] "Please add a short description here" error: ‘variate_generator’ is not a member of ‘std’ Mar 30, 2024
@larshg
Copy link
Contributor

larshg commented Mar 30, 2024

Pcl doesnt support system metslib properly. So the easiest option is to remove it and use the bundled version, which are updated to use boost versions of the random generators.

@larshg larshg removed the status: triage Labels incomplete label Mar 30, 2024
@larshg
Copy link
Contributor

larshg commented Mar 30, 2024

See #5959

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind: compile error Type of issue
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants