vSMC
vSMC: Scalable Monte Carlo
Classes | Namespaces | Macros | Typedefs
aes.hpp File Reference
#include <vsmc/rng/internal/common.hpp>
#include <vsmc/rng/aes_ni.hpp>

Go to the source code of this file.

Classes

class  vsmc::internal::AES128KeySeqGenerator< T >
 
class  vsmc::internal::AES192KeySeqGenerator< T >
 
class  vsmc::internal::AES256KeySeqGenerator< T >
 
class  vsmc::internal::AESKeyInit
 
class  vsmc::internal::AESKeySeq< T, Rounds, KeySeqGenerator >
 
class  vsmc::internal::AESRoundConstant< N >
 
class  vsmc::internal::AESRoundConstant< 0x00 >
 
class  vsmc::internal::AESRoundConstant< 0x01 >
 
class  vsmc::internal::AESRoundConstant< 0x02 >
 
class  vsmc::internal::AESRoundConstant< 0x03 >
 
class  vsmc::internal::AESRoundConstant< 0x04 >
 
class  vsmc::internal::AESRoundConstant< 0x05 >
 
class  vsmc::internal::AESRoundConstant< 0x06 >
 
class  vsmc::internal::AESRoundConstant< 0x07 >
 
class  vsmc::internal::AESRoundConstant< 0x08 >
 
class  vsmc::internal::AESRoundConstant< 0x09 >
 
class  vsmc::internal::AESRoundConstant< 0x0A >
 
class  vsmc::internal::AESRoundConstant< 0x0B >
 
class  vsmc::internal::AESRoundConstant< 0x0C >
 
class  vsmc::internal::AESRoundConstant< 0x0D >
 
class  vsmc::internal::AESRoundConstant< 0x0E >
 
class  vsmc::internal::AESRoundConstant< 0x0F >
 
class  vsmc::internal::AESRoundConstant< 0x10 >
 
class  vsmc::internal::AESRoundConstant< 0x11 >
 
class  vsmc::internal::AESRoundConstant< 0x12 >
 
class  vsmc::internal::AESRoundConstant< 0x13 >
 
class  vsmc::internal::AESRoundConstant< 0x14 >
 
class  vsmc::internal::AESRoundConstant< 0x15 >
 
class  vsmc::internal::AESRoundConstant< 0x16 >
 
class  vsmc::internal::AESRoundConstant< 0x17 >
 
class  vsmc::internal::AESRoundConstant< 0x18 >
 
class  vsmc::internal::AESRoundConstant< 0x19 >
 
class  vsmc::internal::AESRoundConstant< 0x1A >
 
class  vsmc::internal::AESRoundConstant< 0x1B >
 
class  vsmc::internal::AESRoundConstant< 0x1C >
 
class  vsmc::internal::AESRoundConstant< 0x1D >
 
class  vsmc::internal::AESRoundConstant< 0x1E >
 
class  vsmc::internal::AESRoundConstant< 0x1F >
 
class  vsmc::internal::AESRoundConstant< 0x20 >
 
class  vsmc::internal::AESRoundConstant< 0x21 >
 
class  vsmc::internal::AESRoundConstant< 0x22 >
 
class  vsmc::internal::AESRoundConstant< 0x23 >
 
class  vsmc::internal::AESRoundConstant< 0x24 >
 
class  vsmc::internal::AESRoundConstant< 0x25 >
 
class  vsmc::internal::AESRoundConstant< 0x26 >
 
class  vsmc::internal::AESRoundConstant< 0x27 >
 
class  vsmc::internal::AESRoundConstant< 0x28 >
 
class  vsmc::internal::AESRoundConstant< 0x29 >
 
class  vsmc::internal::AESRoundConstant< 0x2A >
 
class  vsmc::internal::AESRoundConstant< 0x2B >
 
class  vsmc::internal::AESRoundConstant< 0x2C >
 
class  vsmc::internal::AESRoundConstant< 0x2D >
 
class  vsmc::internal::AESRoundConstant< 0x2E >
 
class  vsmc::internal::AESRoundConstant< 0x2F >
 
class  vsmc::internal::AESRoundConstant< 0x30 >
 
class  vsmc::internal::AESRoundConstant< 0x31 >
 
class  vsmc::internal::AESRoundConstant< 0x32 >
 
class  vsmc::internal::AESRoundConstant< 0x33 >
 
class  vsmc::internal::AESRoundConstant< 0x34 >
 
class  vsmc::internal::AESRoundConstant< 0x35 >
 
class  vsmc::internal::AESRoundConstant< 0x36 >
 
class  vsmc::internal::AESRoundConstant< 0x37 >
 
class  vsmc::internal::AESRoundConstant< 0x38 >
 
class  vsmc::internal::AESRoundConstant< 0x39 >
 
class  vsmc::internal::AESRoundConstant< 0x3A >
 
class  vsmc::internal::AESRoundConstant< 0x3B >
 
class  vsmc::internal::AESRoundConstant< 0x3C >
 
class  vsmc::internal::AESRoundConstant< 0x3D >
 
class  vsmc::internal::AESRoundConstant< 0x3E >
 
class  vsmc::internal::AESRoundConstant< 0x3F >
 
class  vsmc::internal::AESRoundConstant< 0x40 >
 
class  vsmc::internal::AESRoundConstant< 0x41 >
 
class  vsmc::internal::AESRoundConstant< 0x42 >
 
class  vsmc::internal::AESRoundConstant< 0x43 >
 
class  vsmc::internal::AESRoundConstant< 0x44 >
 
class  vsmc::internal::AESRoundConstant< 0x45 >
 
class  vsmc::internal::AESRoundConstant< 0x46 >
 
class  vsmc::internal::AESRoundConstant< 0x47 >
 
class  vsmc::internal::AESRoundConstant< 0x48 >
 
class  vsmc::internal::AESRoundConstant< 0x49 >
 
class  vsmc::internal::AESRoundConstant< 0x4A >
 
class  vsmc::internal::AESRoundConstant< 0x4B >
 
class  vsmc::internal::AESRoundConstant< 0x4C >
 
class  vsmc::internal::AESRoundConstant< 0x4D >
 
class  vsmc::internal::AESRoundConstant< 0x4E >
 
class  vsmc::internal::AESRoundConstant< 0x4F >
 
class  vsmc::internal::AESRoundConstant< 0x50 >
 
class  vsmc::internal::AESRoundConstant< 0x51 >
 
class  vsmc::internal::AESRoundConstant< 0x52 >
 
class  vsmc::internal::AESRoundConstant< 0x53 >
 
class  vsmc::internal::AESRoundConstant< 0x54 >
 
class  vsmc::internal::AESRoundConstant< 0x55 >
 
class  vsmc::internal::AESRoundConstant< 0x56 >
 
class  vsmc::internal::AESRoundConstant< 0x57 >
 
class  vsmc::internal::AESRoundConstant< 0x58 >
 
class  vsmc::internal::AESRoundConstant< 0x59 >
 
class  vsmc::internal::AESRoundConstant< 0x5A >
 
class  vsmc::internal::AESRoundConstant< 0x5B >
 
class  vsmc::internal::AESRoundConstant< 0x5C >
 
class  vsmc::internal::AESRoundConstant< 0x5D >
 
class  vsmc::internal::AESRoundConstant< 0x5E >
 
class  vsmc::internal::AESRoundConstant< 0x5F >
 
class  vsmc::internal::AESRoundConstant< 0x60 >
 
class  vsmc::internal::AESRoundConstant< 0x61 >
 
class  vsmc::internal::AESRoundConstant< 0x62 >
 
class  vsmc::internal::AESRoundConstant< 0x63 >
 
class  vsmc::internal::AESRoundConstant< 0x64 >
 
class  vsmc::internal::AESRoundConstant< 0x65 >
 
class  vsmc::internal::AESRoundConstant< 0x66 >
 
class  vsmc::internal::AESRoundConstant< 0x67 >
 
class  vsmc::internal::AESRoundConstant< 0x68 >
 
class  vsmc::internal::AESRoundConstant< 0x69 >
 
class  vsmc::internal::AESRoundConstant< 0x6A >
 
class  vsmc::internal::AESRoundConstant< 0x6B >
 
class  vsmc::internal::AESRoundConstant< 0x6C >
 
class  vsmc::internal::AESRoundConstant< 0x6D >
 
class  vsmc::internal::AESRoundConstant< 0x6E >
 
class  vsmc::internal::AESRoundConstant< 0x6F >
 
class  vsmc::internal::AESRoundConstant< 0x70 >
 
class  vsmc::internal::AESRoundConstant< 0x71 >
 
class  vsmc::internal::AESRoundConstant< 0x72 >
 
class  vsmc::internal::AESRoundConstant< 0x73 >
 
class  vsmc::internal::AESRoundConstant< 0x74 >
 
class  vsmc::internal::AESRoundConstant< 0x75 >
 
class  vsmc::internal::AESRoundConstant< 0x76 >
 
class  vsmc::internal::AESRoundConstant< 0x77 >
 
class  vsmc::internal::AESRoundConstant< 0x78 >
 
class  vsmc::internal::AESRoundConstant< 0x79 >
 
class  vsmc::internal::AESRoundConstant< 0x7A >
 
class  vsmc::internal::AESRoundConstant< 0x7B >
 
class  vsmc::internal::AESRoundConstant< 0x7C >
 
class  vsmc::internal::AESRoundConstant< 0x7D >
 
class  vsmc::internal::AESRoundConstant< 0x7E >
 
class  vsmc::internal::AESRoundConstant< 0x7F >
 
class  vsmc::internal::AESRoundConstant< 0x80 >
 
class  vsmc::internal::AESRoundConstant< 0x81 >
 
class  vsmc::internal::AESRoundConstant< 0x82 >
 
class  vsmc::internal::AESRoundConstant< 0x83 >
 
class  vsmc::internal::AESRoundConstant< 0x84 >
 
class  vsmc::internal::AESRoundConstant< 0x85 >
 
class  vsmc::internal::AESRoundConstant< 0x86 >
 
class  vsmc::internal::AESRoundConstant< 0x87 >
 
class  vsmc::internal::AESRoundConstant< 0x88 >
 
class  vsmc::internal::AESRoundConstant< 0x89 >
 
class  vsmc::internal::AESRoundConstant< 0x8A >
 
class  vsmc::internal::AESRoundConstant< 0x8B >
 
class  vsmc::internal::AESRoundConstant< 0x8C >
 
class  vsmc::internal::AESRoundConstant< 0x8D >
 
class  vsmc::internal::AESRoundConstant< 0x8E >
 
class  vsmc::internal::AESRoundConstant< 0x8F >
 
class  vsmc::internal::AESRoundConstant< 0x90 >
 
class  vsmc::internal::AESRoundConstant< 0x91 >
 
class  vsmc::internal::AESRoundConstant< 0x92 >
 
class  vsmc::internal::AESRoundConstant< 0x93 >
 
class  vsmc::internal::AESRoundConstant< 0x94 >
 
class  vsmc::internal::AESRoundConstant< 0x95 >
 
class  vsmc::internal::AESRoundConstant< 0x96 >
 
class  vsmc::internal::AESRoundConstant< 0x97 >
 
class  vsmc::internal::AESRoundConstant< 0x98 >
 
class  vsmc::internal::AESRoundConstant< 0x99 >
 
class  vsmc::internal::AESRoundConstant< 0x9A >
 
class  vsmc::internal::AESRoundConstant< 0x9B >
 
class  vsmc::internal::AESRoundConstant< 0x9C >
 
class  vsmc::internal::AESRoundConstant< 0x9D >
 
class  vsmc::internal::AESRoundConstant< 0x9E >
 
class  vsmc::internal::AESRoundConstant< 0x9F >
 
class  vsmc::internal::AESRoundConstant< 0xA0 >
 
class  vsmc::internal::AESRoundConstant< 0xA1 >
 
class  vsmc::internal::AESRoundConstant< 0xA2 >
 
class  vsmc::internal::AESRoundConstant< 0xA3 >
 
class  vsmc::internal::AESRoundConstant< 0xA4 >
 
class  vsmc::internal::AESRoundConstant< 0xA5 >
 
class  vsmc::internal::AESRoundConstant< 0xA6 >
 
class  vsmc::internal::AESRoundConstant< 0xA7 >
 
class  vsmc::internal::AESRoundConstant< 0xA8 >
 
class  vsmc::internal::AESRoundConstant< 0xA9 >
 
class  vsmc::internal::AESRoundConstant< 0xAA >
 
class  vsmc::internal::AESRoundConstant< 0xAB >
 
class  vsmc::internal::AESRoundConstant< 0xAC >
 
class  vsmc::internal::AESRoundConstant< 0xAD >
 
class  vsmc::internal::AESRoundConstant< 0xAE >
 
class  vsmc::internal::AESRoundConstant< 0xAF >
 
class  vsmc::internal::AESRoundConstant< 0xB0 >
 
class  vsmc::internal::AESRoundConstant< 0xB1 >
 
class  vsmc::internal::AESRoundConstant< 0xB2 >
 
class  vsmc::internal::AESRoundConstant< 0xB3 >
 
class  vsmc::internal::AESRoundConstant< 0xB4 >
 
class  vsmc::internal::AESRoundConstant< 0xB5 >
 
class  vsmc::internal::AESRoundConstant< 0xB6 >
 
class  vsmc::internal::AESRoundConstant< 0xB7 >
 
class  vsmc::internal::AESRoundConstant< 0xB8 >
 
class  vsmc::internal::AESRoundConstant< 0xB9 >
 
class  vsmc::internal::AESRoundConstant< 0xBA >
 
class  vsmc::internal::AESRoundConstant< 0xBB >
 
class  vsmc::internal::AESRoundConstant< 0xBC >
 
class  vsmc::internal::AESRoundConstant< 0xBD >
 
class  vsmc::internal::AESRoundConstant< 0xBE >
 
class  vsmc::internal::AESRoundConstant< 0xBF >
 
class  vsmc::internal::AESRoundConstant< 0xC0 >
 
class  vsmc::internal::AESRoundConstant< 0xC1 >
 
class  vsmc::internal::AESRoundConstant< 0xC2 >
 
class  vsmc::internal::AESRoundConstant< 0xC3 >
 
class  vsmc::internal::AESRoundConstant< 0xC4 >
 
class  vsmc::internal::AESRoundConstant< 0xC5 >
 
class  vsmc::internal::AESRoundConstant< 0xC6 >
 
class  vsmc::internal::AESRoundConstant< 0xC7 >
 
class  vsmc::internal::AESRoundConstant< 0xC8 >
 
class  vsmc::internal::AESRoundConstant< 0xC9 >
 
class  vsmc::internal::AESRoundConstant< 0xCA >
 
class  vsmc::internal::AESRoundConstant< 0xCB >
 
class  vsmc::internal::AESRoundConstant< 0xCC >
 
class  vsmc::internal::AESRoundConstant< 0xCD >
 
class  vsmc::internal::AESRoundConstant< 0xCE >
 
class  vsmc::internal::AESRoundConstant< 0xCF >
 
class  vsmc::internal::AESRoundConstant< 0xD0 >
 
class  vsmc::internal::AESRoundConstant< 0xD1 >
 
class  vsmc::internal::AESRoundConstant< 0xD2 >
 
class  vsmc::internal::AESRoundConstant< 0xD3 >
 
class  vsmc::internal::AESRoundConstant< 0xD4 >
 
class  vsmc::internal::AESRoundConstant< 0xD5 >
 
class  vsmc::internal::AESRoundConstant< 0xD6 >
 
class  vsmc::internal::AESRoundConstant< 0xD7 >
 
class  vsmc::internal::AESRoundConstant< 0xD8 >
 
class  vsmc::internal::AESRoundConstant< 0xD9 >
 
class  vsmc::internal::AESRoundConstant< 0xDA >
 
class  vsmc::internal::AESRoundConstant< 0xDB >
 
class  vsmc::internal::AESRoundConstant< 0xDC >
 
class  vsmc::internal::AESRoundConstant< 0xDD >
 
class  vsmc::internal::AESRoundConstant< 0xDE >
 
class  vsmc::internal::AESRoundConstant< 0xDF >
 
class  vsmc::internal::AESRoundConstant< 0xE0 >
 
class  vsmc::internal::AESRoundConstant< 0xE1 >
 
class  vsmc::internal::AESRoundConstant< 0xE2 >
 
class  vsmc::internal::AESRoundConstant< 0xE3 >
 
class  vsmc::internal::AESRoundConstant< 0xE4 >
 
class  vsmc::internal::AESRoundConstant< 0xE5 >
 
class  vsmc::internal::AESRoundConstant< 0xE6 >
 
class  vsmc::internal::AESRoundConstant< 0xE7 >
 
class  vsmc::internal::AESRoundConstant< 0xE8 >
 
class  vsmc::internal::AESRoundConstant< 0xE9 >
 
class  vsmc::internal::AESRoundConstant< 0xEA >
 
class  vsmc::internal::AESRoundConstant< 0xEB >
 
class  vsmc::internal::AESRoundConstant< 0xEC >
 
class  vsmc::internal::AESRoundConstant< 0xED >
 
class  vsmc::internal::AESRoundConstant< 0xEE >
 
class  vsmc::internal::AESRoundConstant< 0xEF >
 
class  vsmc::internal::AESRoundConstant< 0xF0 >
 
class  vsmc::internal::AESRoundConstant< 0xF1 >
 
class  vsmc::internal::AESRoundConstant< 0xF2 >
 
class  vsmc::internal::AESRoundConstant< 0xF3 >
 
class  vsmc::internal::AESRoundConstant< 0xF4 >
 
class  vsmc::internal::AESRoundConstant< 0xF5 >
 
class  vsmc::internal::AESRoundConstant< 0xF6 >
 
class  vsmc::internal::AESRoundConstant< 0xF7 >
 
class  vsmc::internal::AESRoundConstant< 0xF8 >
 
class  vsmc::internal::AESRoundConstant< 0xF9 >
 
class  vsmc::internal::AESRoundConstant< 0xFA >
 
class  vsmc::internal::AESRoundConstant< 0xFB >
 
class  vsmc::internal::AESRoundConstant< 0xFC >
 
class  vsmc::internal::AESRoundConstant< 0xFD >
 
class  vsmc::internal::AESRoundConstant< 0xFE >
 
class  vsmc::internal::AESRoundConstant< 0xFF >
 

Namespaces

 vsmc
 
 vsmc::internal
 

Macros

#define VSMC_DEFINE_RNG_AES_ROUND_CONSTANT(N, val)
 
#define VSMC_RNG_AES_BLOCKS   4
 AESEngine default blocks. More...
 

Typedefs

using vsmc::AES128 = AES128Engine< std::uint32_t >
 AES-128 RNG engine with 32-bits integers output and default blocks. More...
 
using vsmc::AES128_1x32 = AES128Engine< std::uint32_t, 1 >
 AES-128 RNG engine with 32-bits integers output and 1 block. More...
 
using vsmc::AES128_1x64 = AES128Engine< std::uint64_t, 1 >
 AES-128 RNG engine with 64-bits integers output and 1 block. More...
 
using vsmc::AES128_2x32 = AES128Engine< std::uint32_t, 2 >
 AES-128 RNG engine with 32-bits integers output and 2 blocks. More...
 
using vsmc::AES128_2x64 = AES128Engine< std::uint64_t, 2 >
 AES-128 RNG engine with 64-bits integers output and 2 blocks. More...
 
using vsmc::AES128_4x32 = AES128Engine< std::uint32_t, 4 >
 AES-128 RNG engine with 32-bits integers output and 4 blocks. More...
 
using vsmc::AES128_4x64 = AES128Engine< std::uint64_t, 4 >
 AES-128 RNG engine with 64-bits integers output and 4 blocks. More...
 
using vsmc::AES128_64 = AES128Engine< std::uint64_t >
 AES-128 RNG engine with 64-bits integers output and default blocks. More...
 
using vsmc::AES128_8x32 = AES128Engine< std::uint32_t, 8 >
 AES-128 RNG engine with 32-bits integers output and 8 blocks. More...
 
using vsmc::AES128_8x64 = AES128Engine< std::uint64_t, 8 >
 AES-128 RNG engine with 64-bits integers output and 8 blocks. More...
 
template<typename ResultType , std::size_t Blocks = 4>
using vsmc::AES128Engine = AESNIEngine< ResultType, AES128KeySeq< ResultType, 10 >, 10, Blocks >
 AES-128 RNG engine. More...
 
template<typename ResultType , std::size_t Rounds>
using vsmc::AES128KeySeq = internal::AESKeySeq< ResultType, Rounds, internal::AES128KeySeqGenerator< ResultType >>
 AES128Engine key sequence generator. More...
 
using vsmc::AES192 = AES192Engine< std::uint32_t >
 AES-192 RNG engine with 32-bits integers output and default blocks. More...
 
using vsmc::AES192_1x32 = AES192Engine< std::uint32_t, 1 >
 AES-192 RNG engine with 32-bits integers output and 1 block. More...
 
using vsmc::AES192_1x64 = AES192Engine< std::uint64_t, 1 >
 AES-192 RNG engine with 64-bits integers output and 1 block. More...
 
using vsmc::AES192_2x32 = AES192Engine< std::uint32_t, 2 >
 AES-192 RNG engine with 32-bits integers output and 2 blocks. More...
 
using vsmc::AES192_2x64 = AES192Engine< std::uint64_t, 2 >
 AES-192 RNG engine with 64-bits integers output and 2 blocks. More...
 
using vsmc::AES192_4x32 = AES192Engine< std::uint32_t, 4 >
 AES-192 RNG engine with 32-bits integers output and 4 blocks. More...
 
using vsmc::AES192_4x64 = AES192Engine< std::uint64_t, 4 >
 AES-192 RNG engine with 64-bits integers output and 4 blocks. More...
 
using vsmc::AES192_64 = AES192Engine< std::uint64_t >
 AES-192 RNG engine with 64-bits integers output and default blocks. More...
 
using vsmc::AES192_8x32 = AES192Engine< std::uint32_t, 8 >
 AES-192 RNG engine with 32-bits integers output and 8 blocks. More...
 
using vsmc::AES192_8x64 = AES192Engine< std::uint64_t, 8 >
 AES-192 RNG engine with 64-bits integers output and 8 blocks. More...
 
template<typename ResultType , std::size_t Blocks = 4>
using vsmc::AES192Engine = AESNIEngine< ResultType, AES192KeySeq< ResultType, 12 >, 12, Blocks >
 AES-192 RNG engine. More...
 
template<typename ResultType , std::size_t Rounds>
using vsmc::AES192KeySeq = internal::AESKeySeq< ResultType, Rounds, internal::AES192KeySeqGenerator< ResultType >>
 AES192Engine key sequence generator. More...
 
using vsmc::AES256 = AES256Engine< std::uint32_t >
 AES-256 RNG engine with 32-bits integers output and default blocks. More...
 
using vsmc::AES256_1x32 = AES256Engine< std::uint32_t, 1 >
 AES-256 RNG engine with 32-bits integers output and 1 block. More...
 
using vsmc::AES256_1x64 = AES256Engine< std::uint64_t, 1 >
 AES-256 RNG engine with 64-bits integers output and 1 block. More...
 
using vsmc::AES256_2x32 = AES256Engine< std::uint32_t, 2 >
 AES-256 RNG engine with 32-bits integers output and 2 blocks. More...
 
using vsmc::AES256_2x64 = AES256Engine< std::uint64_t, 2 >
 AES-256 RNG engine with 64-bits integers output and 2 blocks. More...
 
using vsmc::AES256_4x32 = AES256Engine< std::uint32_t, 4 >
 AES-256 RNG engine with 32-bits integers output and 4 blocks. More...
 
using vsmc::AES256_4x64 = AES256Engine< std::uint64_t, 4 >
 AES-256 RNG engine with 64-bits integers output and 4 blocks. More...
 
using vsmc::AES256_64 = AES256Engine< std::uint64_t >
 AES-256 RNG engine with 64-bits integers output and default blocks. More...
 
using vsmc::AES256_8x32 = AES256Engine< std::uint32_t, 8 >
 AES-256 RNG engine with 32-bits integers output and 8 blocks. More...
 
using vsmc::AES256_8x64 = AES256Engine< std::uint64_t, 8 >
 AES-256 RNG engine with 64-bits integers output and 8 blocks. More...
 
template<typename ResultType , std::size_t Blocks = 4>
using vsmc::AES256Engine = AESNIEngine< ResultType, AES256KeySeq< ResultType, 14 >, 14, Blocks >
 AES-256 RNG engine. More...
 
template<typename ResultType , std::size_t Rounds>
using vsmc::AES256KeySeq = internal::AESKeySeq< ResultType, Rounds, internal::AES256KeySeqGenerator< ResultType >>
 AES256Engine key sequence generator. More...
 

Macro Definition Documentation

#define VSMC_DEFINE_RNG_AES_ROUND_CONSTANT (   N,
  val 
)
Value:
template <> \
class AESRoundConstant<N> : public std::integral_constant<int, val> \
{ \
};

Definition at line 38 of file aes.hpp.