C++ 14 Binary Literals
C++ 14 has added support for binary literals.
I.e., you can now write out the individual ones and zeros of an integer.
A binary literal integer is a sequence of ones and zeroes prefixed by
While this may sound verbose it can be useful.
For instance, while testing a function which does some bitwise operations,
having the bits in the test code improves readability.
when counting the longest run of zeroes bounded by ones in an integer:
REQUIRE(solution(0b10000001) == 6); REQUIRE(solution(0b100000001) == 7); REQUIRE(solution(0b0001110110011110001111000011111000) == 4);
C++ 11 Attribute Specifiers
C++ 11 added a construct called an attribute which can be used to attach implementation-specific metadata to most language entities. The syntax is:
Where the ellipses could be anything.
There are two standard attributes in C++ 11,
The first marks a function as never returning.
The second is used to propagate memory order dependencies into and out of functions.
C++ 14 adds
[[deprecated]] and C++ 17 grows the list with
[[fallthrough]] to be used in a switch
[[maybe_unused]] to suppress unused entity compiler warnings,
while the transactional memory TS utilises
All other attributes are implementation-specific, although some may be widely
supported or at least compatible between gcc and clang.