Skip to content

Commit e46f1e7

Browse files
committed
Protect move-only types from MSVC 2026 ICEs
1 parent 982ed80 commit e46f1e7

2 files changed

Lines changed: 21 additions & 37 deletions

File tree

test/flat_map_test.cpp

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,15 @@ int main()
8787
return 1;
8888
}
8989

90-
// if (0 != map_test<my_managed_shared_memory
91-
// ,MyMovableShmMap
92-
// ,MyStdMap
93-
// ,MyMovableShmMultiMap
94-
// ,MyStdMultiMap>()){
95-
// return 1;
96-
// }
90+
//MSVC 14.5 (2026 ICEs when trying to compile move-only types in flat_map)
91+
#if defined(BOOST_MSVC) && (BOOST_MSVC == 1960)
92+
if (0 != map_test<my_managed_shared_memory
93+
,MyMovableShmMap
94+
,MyStdMap
95+
,MyMovableShmMultiMap
96+
,MyStdMultiMap>()){
97+
return 1;
98+
}
9799

98100
if (0 != map_test<my_managed_shared_memory
99101
,MyMoveCopyShmMap
@@ -104,14 +106,14 @@ int main()
104106
return 1;
105107
}
106108

107-
//#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC_MINOR__ < 3)
108-
const test::EmplaceOptions MapOptions = (test::EmplaceOptions)(test::EMPLACE_HINT_PAIR | test::EMPLACE_ASSOC_PAIR);
109-
110-
if(!boost::interprocess::test::test_emplace<boost::container::flat_map<test::EmplaceInt, test::EmplaceInt>, MapOptions>())
111-
return 1;
112-
if(!boost::interprocess::test::test_emplace<boost::container::flat_multimap<test::EmplaceInt, test::EmplaceInt>, MapOptions>())
109+
if (0 != map_test<my_managed_shared_memory
110+
,MyCopyShmSet
111+
,MyStdSet
112+
,MyCopyShmMultiSet
113+
,MyStdMultiSet>()){
114+
std::cout << "Error in set_test<MyCopyShmSet>" << std::endl;
113115
return 1;
114-
//#endif //!defined(__GNUC__)
116+
}
117+
#endif
115118
return 0;
116-
117119
}

test/flat_set_test.cpp

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,6 @@ typedef boost::container::flat_set<test::movable_and_copyable_int, std::less<tes
6464
typedef boost::container::flat_multiset<test::movable_and_copyable_int,std::less<test::movable_and_copyable_int>
6565
,shmem_move_copy_allocator_t> MyMoveCopyShmMultiSet;
6666

67-
typedef boost::container::flat_set<test::copyable_int, std::less<test::copyable_int>
68-
,shmem_copy_allocator_t> MyCopyShmSet;
69-
typedef boost::container::flat_multiset<test::copyable_int,std::less<test::copyable_int>
70-
,shmem_copy_allocator_t> MyCopyShmMultiSet;
71-
7267
int main()
7368
{
7469
using namespace boost::interprocess::test;
@@ -91,6 +86,8 @@ int main()
9186
return 1;
9287
}
9388

89+
//MSVC 14.5 (2026 ICEs when trying to compile move-only types in flat_map)
90+
#if defined(BOOST_MSVC) && (BOOST_MSVC == 1960)
9491
if (0 != set_test<my_managed_shared_memory
9592
,MyMovableShmSet
9693
,MyStdSet
@@ -100,6 +97,7 @@ int main()
10097
return 1;
10198
}
10299

100+
103101
if (0 != set_test<my_managed_shared_memory
104102
,MyMoveCopyShmSet
105103
,MyStdSet
@@ -108,24 +106,8 @@ int main()
108106
std::cout << "Error in set_test<MyMoveCopyShmSet>" << std::endl;
109107
return 1;
110108
}
109+
#endif
111110

112-
if (0 != set_test<my_managed_shared_memory
113-
,MyCopyShmSet
114-
,MyStdSet
115-
,MyCopyShmMultiSet
116-
,MyStdMultiSet>()){
117-
std::cout << "Error in set_test<MyCopyShmSet>" << std::endl;
118-
return 1;
119-
}
120-
121-
//#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC_MINOR__ < 3)
122-
const test::EmplaceOptions SetOptions = (test::EmplaceOptions)(test::EMPLACE_HINT | test::EMPLACE_ASSOC);
123-
124-
if(!boost::interprocess::test::test_emplace<boost::container::flat_set<test::EmplaceInt>, SetOptions>())
125-
return 1;
126-
if(!boost::interprocess::test::test_emplace<boost::container::flat_multiset<test::EmplaceInt>, SetOptions>())
127-
return 1;
128-
//#endif //!defined(__GNUC__)
129111
return 0;
130112

131113
}

0 commit comments

Comments
 (0)