summaryrefslogtreecommitdiff
path: root/cachepad.hpp
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
contact: Jan Huwald // Impressum