blob: beb7528b2f80ea79db2aefd9e9912913508adc00 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#pragma once
template<typename T>
struct cache_pad {
template<typename ...Arg>
cache_pad(Arg... args) : val(args...) {}
operator T () { return val; }
T& operator () () { return val; }
union {
T val;
char pad[(sizeof(T) + 63) / 64 * 64];
};
} __attribute__ ((aligned (64))); // TODO: port to C++11 alignas once GCC support is old enough
|