File tree Expand file tree Collapse file tree 1 file changed +9
-1
lines changed Expand file tree Collapse file tree 1 file changed +9
-1
lines changed Original file line number Diff line number Diff line change 16
16
17
17
#include " googletest/include/gtest/gtest.h"
18
18
#include " subspace/construct/default.h"
19
+ #include " subspace/macros/compiler.h"
19
20
#include " subspace/prelude.h"
20
21
21
22
namespace {
@@ -68,8 +69,15 @@ static_assert(sus::mem::relocate_by_memcpy<sus::ops::Range<usize>>);
68
69
static_assert (sus::mem::relocate_by_memcpy<sus::ops::RangeFrom<usize>>);
69
70
static_assert (sus::mem::relocate_by_memcpy<sus::ops::RangeTo<usize>>);
70
71
// RangeFull has a 0 data size so it's not (0 is indistinguishable from the
71
- // error case and doesn't need to be memcpy'd).
72
+ // error case and doesn't need to be memcpy'd). But on clang, it is marked
73
+ // trivial_abi, so it can be seen as trivially relocatable there.
74
+ //
75
+ // However clang-cl (as seen via subdoc) does something weird here, and makes
76
+ // the data size into 1.
77
+ #if !(_MSC_VER && defined(__clang__))
78
+ static_assert (sus::mem::data_size_of<sus::ops::RangeFull<usize>>() == 0u);
72
79
static_assert (!sus::mem::relocate_by_memcpy<sus::ops::RangeFull<usize>>);
80
+ #endif
73
81
74
82
// The types produced by the various literal syntaxes.
75
83
static_assert (std::same_as<decltype (" .." _r), sus::ops::RangeFull<usize>>);
You can’t perform that action at this time.
0 commit comments