Welcome to the Better Enums tutorials! The code in this tutorial forms a valid program, which you can download and play with. The program runs as part of the automated test suite.
Stream operators
These work almost as you'd expect. First, make sure you include iostream
before enum.h in any translation unit in which you intend to use the
operators:
#include <iostream>
#include <enum.h>
BETTER_ENUM(Channel, int, Red, Green, Blue)
int main()
{
std::cout << +Channel::Red << std::endl;
return 0;
}The thing to watch for is the +: without it, Channel::Red is a value of type
Channel::_enumerated, a C++98 enum type, so writing that to cout will
output an integer. +Channel::Red, however, is a value of type Channel, and
writing that instead will output the string "Red".
Input is also supported:
Channel channel = Channel::Blue; std::cin >> channel; // Expects input such as "Green".
Only char streams are supported for the time being.