File tree Expand file tree Collapse file tree 3 files changed +17
-2
lines changed Expand file tree Collapse file tree 3 files changed +17
-2
lines changed Original file line number Diff line number Diff line change 125
125
#define sus_clang_bug_49358 (...)
126
126
#define sus_clang_bug_49358_else (...) __VA_ARGS__
127
127
#endif
128
+
129
+ // TODO: https://github.com/llvm/llvm-project/issues/59689
130
+ // offsetof() is not constant evaluable in clang-cl.
131
+ #if _MSC_VER && __clang_major__ > 0 // TODO: Update when the bug is fixed.
132
+ #define sus_clang_bug_59689 (...) __VA_ARGS__
133
+ #define sus_clang_bug_59689_else (...)
134
+ #else
135
+ #define sus_clang_bug_59689 (...)
136
+ #define sus_clang_bug_59689_else (...) __VA_ARGS__
137
+ #endif
Original file line number Diff line number Diff line change @@ -179,7 +179,8 @@ concept NeverValueField = never_value_access<T>::has_field;
179
179
\
180
180
template <class SusUnsafeNeverValueOuter , \
181
181
bool SusUnsafeNeverValueStandardLayout = \
182
- std::is_standard_layout_v<SusUnsafeNeverValueOuter>> \
182
+ sus_clang_bug_59689 (false ) sus_clang_bug_59689_else( \
183
+ std::is_standard_layout_v<SusUnsafeNeverValueOuter>)> \
183
184
struct SusUnsafeNeverValueOverlay; \
184
185
\
185
186
template <class SusUnsafeNeverValueOuter > \
Original file line number Diff line number Diff line change @@ -211,6 +211,10 @@ struct [[sus_trivial_abi]] StoragePointer<T&> {
211
211
212
212
// This must be true in order for StoragePointer to be useful with the
213
213
// never-value field optimization.
214
- static_assert (::sus::mem::NeverValueField<StoragePointer<int &>>);
214
+ // clang-format off
215
+ sus_clang_bug_59689_else (
216
+ static_assert (::sus::mem::NeverValueField<StoragePointer<int &>>);
217
+ )
218
+ // clang-format on
215
219
216
220
} // namespace sus::option::__private
You can’t perform that action at this time.
0 commit comments