5f6b223237
Ideally we'd just do this when we need it, but the ostream derivation will be controlled by both global config and per-structure config, so it's hard to know exactly when we need it and when we don't.
34 lines
492 B
C++
34 lines
492 B
C++
#ifdef __cplusplus
|
|
template <typename T>
|
|
using ManuallyDrop = T;
|
|
#endif
|
|
|
|
|
|
#include <cstdarg>
|
|
#include <cstdint>
|
|
#include <cstdlib>
|
|
#include <ostream>
|
|
#include <new>
|
|
|
|
template<typename T = void>
|
|
struct NotReprC;
|
|
|
|
struct Point {
|
|
int32_t x;
|
|
int32_t y;
|
|
};
|
|
|
|
using Foo = NotReprC<ManuallyDrop<Point>>;
|
|
|
|
struct MyStruct {
|
|
ManuallyDrop<Point> point;
|
|
};
|
|
|
|
extern "C" {
|
|
|
|
void root(const Foo *a, const MyStruct *with_manual_drop);
|
|
|
|
void take(ManuallyDrop<Point> with_manual_drop);
|
|
|
|
} // extern "C"
|