#ifndef TEST_INTEROP_CXX_STDLIB_INPUTS_STD_OPTIONAL_H #define TEST_INTEROP_CXX_STDLIB_INPUTS_STD_OPTIONAL_H #include #include using StdOptionalInt = std::optional; using StdOptionalBool = std::optional; using StdOptionalString = std::optional; using StdOptionalOptionalInt = std::optional>; struct HasConstexprCtor { int value; constexpr HasConstexprCtor(int value) : value(value) {} constexpr HasConstexprCtor(const HasConstexprCtor &other) = default; constexpr HasConstexprCtor(HasConstexprCtor &&other) = default; }; using StdOptionalHasConstexprCtor = std::optional; struct HasDeletedMoveCtor { int value; HasDeletedMoveCtor(int value) : value(value) {} HasDeletedMoveCtor(const HasDeletedMoveCtor &other) : value(other.value) {} HasDeletedMoveCtor(HasDeletedMoveCtor &&other) = delete; }; using StdOptionalHasDeletedMoveCtor = std::optional; inline StdOptionalInt getNonNilOptional() { return {123}; } inline StdOptionalInt getNilOptional() { return {std::nullopt}; } inline bool takesOptionalInt(std::optional arg) { return (bool)arg; } inline bool takesOptionalString(std::optional arg) { return (bool)arg; } #endif // TEST_INTEROP_CXX_STDLIB_INPUTS_STD_OPTIONAL_H