Added two new traits and a way to specify them
authorNicholas Ormrod <njormrod@fb.com>
Wed, 5 Dec 2012 21:15:57 +0000 (13:15 -0800)
committerJordan DeLong <jdelong@fb.com>
Sun, 16 Dec 2012 22:46:35 +0000 (14:46 -0800)
commit93b0f543f20b8ef3a4c1e34591370011e2dc7168
treeabb3cc1e8ffed6360f26d96252b13619e9199430
parent291bf0627c0eba99fd9f109abb66a80354afd031
Added two new traits and a way to specify them

Summary:
Added IsBits (has value semantics; can be copied by memcpy and
deleted by free. Implies IsRelocatable) and Is0Initializable (new (ptr)
T() is equivalent to memset(ptr, 0, sizeof(T))).
Converted the boost types for IsRelocatable to std types (now available
from <type_traits>).
Added a new way to specify IsRelocatable, IsBits, and Is0Initializable:
typedef std::true_type <property-name> in your class. No namespace
exiting required. This method also supports inheritance, and may be
overriden in base classes.
Added a test file to test Traits.

Test Plan:
Run new test file. Compile some real-world code (in my case,
multifeed).

Reviewed By: andrei.alexandrescu@fb.com

FB internal diff: D610996
folly/Traits.h
folly/test/TraitsTest.cpp [new file with mode: 0644]