/******************************************************************************
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
C#, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
#include <iostream>
typedef enum {
VAL_BOOL,
VAL_NIL,
VAL_NUMBER,
} ValueType;
typedef struct {
ValueType type;
union {
bool boolean;
double number;
} as;
} Value;
#define NUMBER_VAL(value) ((Value){ VAL_NUMBER, { .number = value } })
std::ostream& operator<<(std::ostream &stream, const Value& val)
{
stream << "Value: " << val.as.number;
return stream;
}
int main()
{
Value val = NUMBER_VAL(3.0);
std::cout << val << std::endl;
return 0;
}