offset_based_getter produces wrong result with clang on non-X86 platform
- Vorherrschende Sprache
- C++
- Sterne
- 1.5k
- Forks
- 176
- Ø Merge
- 5 T. 21 Std.
- Gemergte PRs (30 T.)
- 1
Beschreibung
The attached mini reproducer fails if compiled with Clang-16 on non-X86 platform:
```
#include
#include
#include
struct user_type {
char c;
double d;
};
int main() {
using pfr_tuple = boost::pfr::detail::sequence_tuple::tuple;
using getter = boost::pfr::detail::offset_based_getter;
using boost::pfr::detail::size_t_;
using boost::pfr::detail::sequence_tuple::get;
user_type value{};
auto begin = reinterpret_cast(&value);
auto native_offset = reinterpret_cast(&value.d) - begin;
auto getter_offset = reinterpret_cast(&getter{}.get(value, size_t_<1>{})) - begin;
if (native_offset != getter_offset) {
printf("native_offset != getter_offset ('%li' != '%li')\n", native_offset, getter_offset);
printf("FAIL\n");
} else {
printf("PASS\n");
}
}
```
Test output is:
```
native_offset != getter_offset ('8' != '4')
FAIL
```
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Bewertung
Dieses Issue wurde noch nicht bewertet.