multi_array doesn't compile
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 70/100
Research direction
Reproduce the issue with the MSVC example in the report, then inspect boost/multi_array/storage_order.hpp and boost/multi_array/multi_array_ref.hpp at the reported lines. Check the constructor diagnostics involving deprecated assign calls and extents declarations; done means the example compiles without these errors or warnings.
Written by the indexing model from the issue text.
Description
There are a lot of errors with simple multi_array instantiation:
- declaration of 'extents' hides global declaration
- deprecated assign method is used instead of fill in boost::array used for extents and storage_order in multi_array constructor. Problem with storage_order constructor and multi_array constructor itself.
Microsoft (R) C/C++ Optimizing Compiler Version 19.43.34810 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
#include <boost/multi_array.hpp>
GlobalFixture::GlobalFixture() {
boost::multi_array<double, 4> ma;
}
1>------ Build started: Project: mts_test_utility, Configuration: Debug x64 ------
1>GlobalFixture.cpp
1>C:\boost_1_88_0\boost\multi_array\multi_array_ref.hpp(615,45): warning C4459: declaration of 'extents' hides global declaration
1>(compiling source file '/GlobalFixture.cpp')
1> C:\boost_1_88_0\boost\multi_array\base.hpp(69,33):
1> see declaration of 'boost::anonymous-namespace'::extents' 1> C:\boost_1_88_0\boost\multi_array\multi_array_ref.hpp(615,45): 1> the template instantiation context (the oldest one first) is 1> C:\MTS\mts_test_utility\GlobalFixture.cpp(16,32): 1> see reference to class template instantiation 'boost::multi_array<double,4,std::allocator<double>>' being compiled 1> C:\boost_1_88_0\boost\multi_array.hpp(122,10): 1> see reference to class template instantiation 'boost::multi_array_ref<T,4>' being compiled 1> with 1> [ 1> T=double 1> ] 1> C:\boost_1_88_0\boost\multi_array\multi_array_ref.hpp(612,3): 1> while compiling class template member function 'boost::multi_array_ref<T,4>::multi_array_ref(T *,const boost::general_storage_order<4> &,const __int64 *,const unsigned __int64 *)' 1> with 1> [ 1> T=double 1> ] 1> C:\boost_1_88_0\boost\multi_array.hpp(153,15): 1> see the first reference to 'boost::multi_array_ref<T,4>::multi_array_ref' in 'boost::multi_array<double,4,std::allocator<double>>::multi_array' 1> with 1> [ 1> T=double 1> ] 1> C:\MTS\mts_test_utility\GlobalFixture.cpp(16,32): 1> see the first reference to 'boost::multi_array<double,4,std::allocator<double>>::multi_array' in 'GlobalFixture::GlobalFixture' 1>C:\boost_1_88_0\boost\multi_array\storage_order.hpp(51,18): error C4996: 'boost::array<bool,4>::assign': please use fill instead 1>(compiling source file '/GlobalFixture.cpp') 1> C:\boost_1_88_0\boost\multi_array\storage_order.hpp(51,18): 1> the template instantiation context (the oldest one first) is 1> C:\boost_1_88_0\boost\multi_array\multi_array_ref.hpp(413,10): 1> see reference to class template instantiation 'boost::const_multi_array_ref<T,4,T *>' being compiled 1> with 1> [ 1> T=double 1> ] 1> C:\boost_1_88_0\boost\multi_array\multi_array_ref.hpp(350,22): 1> see reference to class template instantiation 'boost::general_storage_order<4>' being compiled 1> C:\boost_1_88_0\boost\multi_array\storage_order.hpp(47,5): 1> while compiling class template member function 'boost::general_storage_order<4>::general_storage_order(const boost::c_storage_order &)' 1> C:\boost_1_88_0\boost\multi_array.hpp(153,15): 1> see the first reference to 'boost::general_storage_order<4>::general_storage_order' in 'boost::multi_array<double,4,std::allocator<double>>::multi_array' 1> C:\MTS\mts_test_utility\GlobalFixture.cpp(16,32): 1> see the first reference to 'boost::multi_array<double,4,std::allocator<double>>::multi_array' in 'GlobalFixture::GlobalFixture' 1>C:\boost_1_88_0\boost\multi_array\multi_array_ref.hpp(328,42): warning C4459: declaration of 'extents' hides global declaration 1>(compiling source file '/GlobalFixture.cpp') 1> C:\boost_1_88_0\boost\multi_array\base.hpp(69,33): 1> see declaration of 'boost::anonymous-namespace'::extents'
1> C:\boost_1_88_0\boost\multi_array\multi_array_ref.hpp(328,42):
1> the template instantiation context (the oldest one first) is
1> C:\boost_1_88_0\boost\multi_array\multi_array_ref.hpp(324,3):
1> while compiling class template member function 'boost::const_multi_array_ref<T,4,T *>::const_multi_array_ref(TPtr,const boost::general_storage_order<4> &,const __int64 *,const unsigned __int64 *)'
1> with
1> [
1> T=double,
1> TPtr=double *
1> ]
1> C:\boost_1_88_0\boost\multi_array\multi_array_ref.hpp(616,15):
1> see the first reference to 'boost::const_multi_array_ref<T,4,T *>::const_multi_array_ref' in 'boost::multi_array_ref<T,4>::multi_array_ref'
1> with
1> [
1> T=double
1> ]
1> C:\boost_1_88_0\boost\multi_array.hpp(153,15):
1> see the first reference to 'boost::multi_array_ref<T,4>::multi_array_ref' in 'boost::multi_array<double,4,std::allocator>::multi_array'
1> with
1> [
1> T=double
1> ]
1> C:\MTS\mts_test_utility\GlobalFixture.cpp(16,32):
1> see the first reference to 'boost::multi_array<double,4,std::allocator>::multi_array' in 'GlobalFixture::GlobalFixture'
1>C:\boost_1_88_0\boost\multi_array\multi_array_ref.hpp(343,18): error C4996: 'boost::array<__int64,4>::assign': please use fill instead
1>(compiling source file '/GlobalFixture.cpp')
1>Done building project "mts_test_utility.vcxproj" -- FAILED.
- Dominant language
- C++
- Stars
- 32
- Forks
- 39
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from boostorg/multi_array
-
boostorg/multi_array#35 · 2 comments · 1 assignee ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
boostorg/multi_array#34 ·
-
Difficulty 5/5 Over a week Newbie friendliness 30/100
boostorg/multi_array#33 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
boostorg/multi_array#32 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 48/100
boostorg/multi_array#31 · 2 comments ·
All issues in boostorg/multi_array
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
AXERA-TECH/ax-llm#77 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
games-on-whales/wolf#509 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
bug-unconfirmed
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
NVIDIA/cuda-samples#453 ·