Makefile:83: GCC currently produces very slow binaries for Stormphrax
Downloading default network nightwoods.nnue
curl -sOL https://github.com/Ciekce/stormphrax-nets/releases/download/nightwoods/nightwoods.nnue
g++ -std=c++20 -O3 -flto -DNDEBUG -DSP_NETWORK_FILE=\"nightwoods.nnue\" -DSP_VERSION=6.0.0 -D_SILENCE_CXX20_ATOMIC_INIT_DEPRECATION_WARNING -DSP_NATIVE -march=native -DSP_FAST_PEXT -pthread -o sp_profile -DSP_PGO_PROFILE -fprofile-generate src/main.cpp src/uci.cpp src/util/split.cpp src/position/position.cpp src/movegen.cpp src/search.cpp src/util/timer.cpp src/pretty.cpp src/ttable.cpp src/limit/time.cpp src/eval/nnue.cpp src/perft.cpp src/bench.cpp src/tunable.cpp src/opts.cpp src/3rdparty/fathom/tbprobe.cpp src/datagen/datagen.cpp src/wdl.cpp src/cuckoo.cpp src/datagen/marlinformat.cpp src/datagen/viriformat.cpp src/datagen/fen.cpp src/tb.cpp src/3rdparty/zstd/zstddeclib.c src/eval/nnue/io_impl.cpp src/util/ctrlc.cpp src/attacks/black_magic/attacks.cpp src/attacks/bmi2/attacks.cpp
In file included from src/position/../util/bits.h:29,
                 from src/position/../bitboard.h:26,
                 from src/position/boards.h:26,
                 from src/position/position.h:29,
                 from src/search.h:37,
                 from src/bench.h:23,
                 from src/main.cpp:20:
src/position/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/position/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/position/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/position/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/position/../eval/nnue/input.h:33,
                 from src/position/../eval/nnue.h:26,
                 from src/position/position.h:33:
src/position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
src/search.h:313:27: error: explicit specialization in non-namespace scope ‘class stormphrax::search::Searcher’
  313 |                 template <>
      |                           ^
src/search.h:314:22: error: template-id ‘search<false, true>’ in declaration of primary template
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
In file included from src/position/../util/bits.h:29,
                 from src/position/../bitboard.h:26,
                 from src/position/boards.h:26,
                 from src/position/position.h:29,
                 from src/uci.cpp:34:
src/position/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/position/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/position/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/position/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/position/../eval/nnue/input.h:33,
                 from src/position/../eval/nnue.h:26,
                 from src/position/position.h:33:
src/position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
In file included from src/uci.cpp:35:
src/search.h:313:27: error: explicit specialization in non-namespace scope ‘class stormphrax::search::Searcher’
  313 |                 template <>
      |                           ^
src/search.h:314:22: error: template-id ‘search<false, true>’ in declaration of primary template
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
In file included from src/position/../util/bits.h:29,
                 from src/position/../bitboard.h:26,
                 from src/position/boards.h:26,
                 from src/position/position.h:29,
                 from src/position/position.cpp:19:
src/position/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/position/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/position/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/position/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/position/../eval/nnue/input.h:33,
                 from src/position/../eval/nnue.h:26,
                 from src/position/position.h:33:
src/position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
In file included from src/position/../util/bits.h:29,
                 from src/position/../bitboard.h:26,
                 from src/position/boards.h:26,
                 from src/position/position.h:29,
                 from src/movegen.h:24,
                 from src/movegen.cpp:19:
src/position/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/position/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/position/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/position/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/position/../eval/nnue/input.h:33,
                 from src/position/../eval/nnue.h:26,
                 from src/position/position.h:33:
src/position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
In file included from src/position/../util/bits.h:29,
                 from src/position/../bitboard.h:26,
                 from src/position/boards.h:26,
                 from src/position/position.h:29,
                 from src/search.h:37,
                 from src/search.cpp:19:
src/position/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/position/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/position/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/position/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/position/../eval/nnue/input.h:33,
                 from src/position/../eval/nnue.h:26,
                 from src/position/position.h:33:
src/position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
src/search.h:313:27: error: explicit specialization in non-namespace scope ‘class stormphrax::search::Searcher’
  313 |                 template <>
      |                           ^
src/search.h:314:22: error: template-id ‘search<false, true>’ in declaration of primary template
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
src/search.cpp: In instantiation of ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool) [with bool PvNode = true; bool RootNode = true; stormphrax::Score = int; stormphrax::i32 = int; stormphrax::u32 = unsigned int]’:
src/search.cpp:370:34:   required from here
  370 |                                 newScore = search<true, true>(thread, thread.rootPv, aspDepth, 0, 0, alpha, beta, false);
      |                                            ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.cpp:693:59: error: use of deleted function ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool)’
  693 |                                 const auto score = -search(thread, curr.pv, depth - R,
      |                                                     ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
  694 |                                         ply + 1, moveStackIdx, -beta, -beta + 1, !cutnode);
      |                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.h:314:22: note: declared here
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
src/search.cpp:693:59: error: use of deleted function ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool)’
  693 |                                 const auto score = -search(thread, curr.pv, depth - R,
      |                                                     ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
  694 |                                         ply + 1, moveStackIdx, -beta, -beta + 1, !cutnode);
      |                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.h:314:22: note: declared here
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
src/search.cpp:732:64: error: use of deleted function ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool)’
  732 |                                                 score = -search(thread, curr.pv, probcutDepth - 1, ply + 1,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  733 |                                                         moveStackIdx + 1, -probcutBeta, -probcutBeta + 1, !cutnode);
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.h:314:22: note: declared here
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
src/search.cpp:732:64: error: use of deleted function ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool)’
  732 |                                                 score = -search(thread, curr.pv, probcutDepth - 1, ply + 1,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  733 |                                                         moveStackIdx + 1, -probcutBeta, -probcutBeta + 1, !cutnode);
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.h:314:22: note: declared here
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
src/search.cpp:861:58: error: use of deleted function ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool)’
  861 |                                 const auto score = search(thread, curr.pv, sDepth, ply, moveStackIdx + 1, sBeta - 1, sBeta, cutnode);
      |                                                    ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.h:314:22: note: declared here
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
src/search.cpp:861:58: error: use of deleted function ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool)’
  861 |                                 const auto score = search(thread, curr.pv, sDepth, ply, moveStackIdx + 1, sBeta - 1, sBeta, cutnode);
      |                                                    ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.h:314:22: note: declared here
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
src/search.cpp:911:56: error: use of deleted function ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool)’
  911 |                                         score = -search(thread, curr.pv, reduced, ply + 1, moveStackIdx + 1, -alpha - 1, -alpha, true);
      |                                                  ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.h:314:22: note: declared here
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
src/search.cpp:911:56: error: use of deleted function ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool)’
  911 |                                         score = -search(thread, curr.pv, reduced, ply + 1, moveStackIdx + 1, -alpha - 1, -alpha, true);
      |                                                  ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.h:314:22: note: declared here
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
src/search.cpp:920:64: error: use of deleted function ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool)’
  920 |                                                 score = -search(thread, curr.pv, newDepth, ply + 1,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  921 |                                                         moveStackIdx + 1, -alpha - 1, -alpha, !cutnode);
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.h:314:22: note: declared here
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
src/search.cpp:920:64: error: use of deleted function ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool)’
  920 |                                                 score = -search(thread, curr.pv, newDepth, ply + 1,
      |                                                          ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  921 |                                                         moveStackIdx + 1, -alpha - 1, -alpha, !cutnode);
      |                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.h:314:22: note: declared here
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
src/search.cpp:934:56: error: use of deleted function ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool)’
  934 |                                         score = -search(thread, curr.pv, newDepth, ply + 1,
      |                                                  ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  935 |                                                 moveStackIdx + 1, -alpha - 1, -alpha, !cutnode);
      |                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.h:314:22: note: declared here
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
src/search.cpp:934:56: error: use of deleted function ‘stormphrax::Score stormphrax::search::Searcher::search(stormphrax::search::ThreadData&, stormphrax::search::PvList&, stormphrax::i32, stormphrax::i32, stormphrax::u32, stormphrax::Score, stormphrax::Score, bool)’
  934 |                                         score = -search(thread, curr.pv, newDepth, ply + 1,
      |                                                  ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  935 |                                                 moveStackIdx + 1, -alpha - 1, -alpha, !cutnode);
      |                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/search.h:314:22: note: declared here
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
In file included from src/util/bits.h:29,
                 from src/bitboard.h:26,
                 from src/pretty.h:25,
                 from src/pretty.cpp:19:
src/util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/position/../eval/nnue/input.h:33,
                 from src/position/../eval/nnue.h:26,
                 from src/position/position.h:33,
                 from src/pretty.h:26:
src/position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
In file included from src/ttable.h:31,
                 from src/ttable.cpp:19:
src/arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/eval/nnue/../../util/simd.h:25,
                 from src/eval/nnue/activation.h:29,
                 from src/eval/arch.h:25,
                 from src/eval/nnue.h:25,
                 from src/eval/nnue.cpp:19:
src/eval/nnue/../../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/eval/nnue/../../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/eval/nnue/../../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/eval/nnue/../../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/eval/nnue/../../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/eval/nnue/input.h:33,
                 from src/eval/nnue.h:26:
src/eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
In file included from src/position/../util/bits.h:29,
                 from src/position/../bitboard.h:26,
                 from src/position/boards.h:26,
                 from src/position/position.h:29,
                 from src/perft.h:24,
                 from src/perft.cpp:19:
src/position/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/position/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/position/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/position/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/position/../eval/nnue/input.h:33,
                 from src/position/../eval/nnue.h:26,
                 from src/position/position.h:33:
src/position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
In file included from src/position/../util/bits.h:29,
                 from src/position/../bitboard.h:26,
                 from src/position/boards.h:26,
                 from src/position/position.h:29,
                 from src/search.h:37,
                 from src/bench.h:23,
                 from src/bench.cpp:19:
src/position/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/position/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/position/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/position/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/position/../eval/nnue/input.h:33,
                 from src/position/../eval/nnue.h:26,
                 from src/position/position.h:33:
src/position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
src/search.h:313:27: error: explicit specialization in non-namespace scope ‘class stormphrax::search::Searcher’
  313 |                 template <>
      |                           ^
src/search.h:314:22: error: template-id ‘search<false, true>’ in declaration of primary template
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
In file included from src/3rdparty/fathom/../../util/bits.h:29,
                 from src/3rdparty/fathom/tbconfig.h:29,
                 from src/3rdparty/fathom/tbprobe.h:27,
                 from src/3rdparty/fathom/tbprobe.cpp:40:
src/3rdparty/fathom/../../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/3rdparty/fathom/../../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/3rdparty/fathom/../../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/3rdparty/fathom/../../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/3rdparty/fathom/../../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/3rdparty/fathom/../../position/../eval/nnue/input.h:33,
                 from src/3rdparty/fathom/../../position/../eval/nnue.h:26,
                 from src/3rdparty/fathom/../../position/position.h:33,
                 from src/3rdparty/fathom/../../search.h:37,
                 from src/3rdparty/fathom/tbconfig.h:31:
src/3rdparty/fathom/../../position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/3rdparty/fathom/../../position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/3rdparty/fathom/../../position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/3rdparty/fathom/../../position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/3rdparty/fathom/../../position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/3rdparty/fathom/../../position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/3rdparty/fathom/../../position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/3rdparty/fathom/../../position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/3rdparty/fathom/../../position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/3rdparty/fathom/../../position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
src/3rdparty/fathom/../../search.h:313:27: error: explicit specialization in non-namespace scope ‘class stormphrax::search::Searcher’
  313 |                 template <>
      |                           ^
src/3rdparty/fathom/../../search.h:314:22: error: template-id ‘search<false, true>’ in declaration of primary template
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
In file included from src/datagen/../position/../util/bits.h:29,
                 from src/datagen/../position/../bitboard.h:26,
                 from src/datagen/../position/boards.h:26,
                 from src/datagen/../position/position.h:29,
                 from src/datagen/../search.h:37,
                 from src/datagen/datagen.cpp:30:
src/datagen/../position/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/datagen/../position/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/datagen/../position/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/datagen/../position/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/datagen/../position/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/datagen/../position/../eval/nnue/input.h:33,
                 from src/datagen/../position/../eval/nnue.h:26,
                 from src/datagen/../position/position.h:33:
src/datagen/../position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/datagen/../position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/datagen/../position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/datagen/../position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
src/datagen/../search.h:313:27: error: explicit specialization in non-namespace scope ‘class stormphrax::search::Searcher’
  313 |                 template <>
      |                           ^
src/datagen/../search.h:314:22: error: template-id ‘search<false, true>’ in declaration of primary template
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
In file included from src/datagen/viriformat.h:25,
                 from src/datagen/datagen.cpp:36:
src/datagen/marlinformat.h:37:43: warning: ignoring packed attribute because of unpacked non-POD field ‘stormphrax::util::U4Array<32> stormphrax::datagen::marlinformat::PackedBoard::pieces’
   37 |                         util::U4Array<32> pieces;
      |                                           ^~~~~~
In file included from src/attacks/../util/bits.h:29,
                 from src/attacks/../bitboard.h:26,
                 from src/attacks/attacks.h:27,
                 from src/cuckoo.cpp:25:
src/attacks/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/attacks/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/attacks/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/attacks/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/attacks/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/datagen/../position/../util/bits.h:29,
                 from src/datagen/../position/../bitboard.h:26,
                 from src/datagen/../position/boards.h:26,
                 from src/datagen/../position/position.h:29,
                 from src/datagen/format.h:29,
                 from src/datagen/marlinformat.h:25,
                 from src/datagen/marlinformat.cpp:19:
src/datagen/../position/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/datagen/../position/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/datagen/../position/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/datagen/../position/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/datagen/../position/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/datagen/../position/../eval/nnue/input.h:33,
                 from src/datagen/../position/../eval/nnue.h:26,
                 from src/datagen/../position/position.h:33:
src/datagen/../position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/datagen/../position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/datagen/../position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/datagen/../position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
src/datagen/marlinformat.h:37:43: warning: ignoring packed attribute because of unpacked non-POD field ‘stormphrax::util::U4Array<32> stormphrax::datagen::marlinformat::PackedBoard::pieces’
   37 |                         util::U4Array<32> pieces;
      |                                           ^~~~~~
In file included from src/datagen/../position/../util/bits.h:29,
                 from src/datagen/../position/../bitboard.h:26,
                 from src/datagen/../position/boards.h:26,
                 from src/datagen/../position/position.h:29,
                 from src/datagen/format.h:29,
                 from src/datagen/viriformat.h:24,
                 from src/datagen/viriformat.cpp:19:
src/datagen/../position/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/datagen/../position/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/datagen/../position/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/datagen/../position/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/datagen/../position/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/datagen/../position/../eval/nnue/input.h:33,
                 from src/datagen/../position/../eval/nnue.h:26,
                 from src/datagen/../position/position.h:33:
src/datagen/../position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/datagen/../position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/datagen/../position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/datagen/../position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
In file included from src/datagen/viriformat.h:25:
src/datagen/marlinformat.h:37:43: warning: ignoring packed attribute because of unpacked non-POD field ‘stormphrax::util::U4Array<32> stormphrax::datagen::marlinformat::PackedBoard::pieces’
   37 |                         util::U4Array<32> pieces;
      |                                           ^~~~~~
In file included from src/datagen/../position/../util/bits.h:29,
                 from src/datagen/../position/../bitboard.h:26,
                 from src/datagen/../position/boards.h:26,
                 from src/datagen/../position/position.h:29,
                 from src/datagen/format.h:29,
                 from src/datagen/fen.h:25,
                 from src/datagen/fen.cpp:19:
src/datagen/../position/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/datagen/../position/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/datagen/../position/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/datagen/../position/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/datagen/../position/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/datagen/../position/../eval/nnue/input.h:33,
                 from src/datagen/../position/../eval/nnue.h:26,
                 from src/datagen/../position/position.h:33:
src/datagen/../position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/datagen/../position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/datagen/../position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/datagen/../position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/datagen/../position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
In file included from src/position/../util/bits.h:29,
                 from src/position/../bitboard.h:26,
                 from src/position/boards.h:26,
                 from src/position/position.h:29,
                 from src/tb.h:23,
                 from src/tb.cpp:19:
src/position/../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/position/../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/position/../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/position/../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/position/../eval/nnue/input.h:33,
                 from src/position/../eval/nnue.h:26,
                 from src/position/position.h:33:
src/position/../eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/position/../eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/position/../eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
src/position/../eval/nnue/input.h:247:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::Accumulator = class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’ changes meaning of ‘Accumulator’ [-Wchanges-meaning]
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                       ^~~~~~~~~~~
src/position/../eval/nnue/input.h:247:37: note: used here to mean ‘class stormphrax::eval::nnue::Accumulator<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet> >’
  247 |                 using Accumulator = Accumulator<FeatureTransformer<Type, Outputs, FeatureSet>>;
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:39:15: note: declared here
   39 |         class Accumulator
      |               ^~~~~~~~~~~
src/position/../eval/nnue/input.h:248:23: warning: declaration of ‘using stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>::RefreshTable = struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’ changes meaning of ‘RefreshTable’ [-Wchanges-meaning]
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                       ^~~~~~~~~~~~
src/position/../eval/nnue/input.h:248:38: note: used here to mean ‘struct stormphrax::eval::nnue::RefreshTable<stormphrax::eval::nnue::FeatureTransformer<Type, Outputs, FeatureSet>, FeatureSet::RefreshTableSize>’
  248 |                 using RefreshTable = RefreshTable<FeatureTransformer<Type, Outputs, FeatureSet>,
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  249 |                     FeatureSet::RefreshTableSize>;
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/position/../eval/nnue/input.h:225:16: note: declared here
  225 |         struct RefreshTable
      |                ^~~~~~~~~~~~
In file included from src/3rdparty/fathom/tbconfig.h:31,
                 from src/3rdparty/fathom/tbprobe.h:27,
                 from src/tb.cpp:22:
src/3rdparty/fathom/../../search.h:313:27: error: explicit specialization in non-namespace scope ‘class stormphrax::search::Searcher’
  313 |                 template <>
      |                           ^
src/3rdparty/fathom/../../search.h:314:22: error: template-id ‘search<false, true>’ in declaration of primary template
  314 |                 auto search<false, true>(ThreadData &thread, PvList &pv, i32 depth, i32 ply,
      |                      ^~~~~~~~~~~~~~~~~~~
In file included from src/eval/nnue/io_impl.h:31,
                 from src/eval/nnue/io_impl.cpp:19:
src/eval/nnue/io.h:36:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   36 |                 template <>
      |                           ^
src/eval/nnue/io.h:37:29: error: template-id ‘read<stormphrax::i16>’ in declaration of primary template
   37 |                 inline auto read<i16>(std::span<i16> dst) -> bool
      |                             ^~~~~~~~~
src/eval/nnue/io.h:51:27: error: explicit specialization in non-namespace scope ‘class stormphrax::eval::nnue::IParamStream’
   51 |                 template <>
      |                           ^
src/eval/nnue/io.h:52:29: error: template-id ‘write<stormphrax::i16>’ in declaration of primary template
   52 |                 inline auto write<i16>(std::span<i16> src) -> bool
      |                             ^~~~~~~~~~
In file included from src/attacks/black_magic/../../util/bits.h:29,
                 from src/attacks/black_magic/../../bitboard.h:26,
                 from src/attacks/black_magic/../attacks.h:27,
                 from src/attacks/black_magic/attacks.cpp:19:
src/attacks/black_magic/../../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/attacks/black_magic/../../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/attacks/black_magic/../../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/attacks/black_magic/../../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/attacks/black_magic/../../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
In file included from src/attacks/bmi2/../../util/bits.h:29,
                 from src/attacks/bmi2/../../bitboard.h:26,
                 from src/attacks/bmi2/../attacks.h:27,
                 from src/attacks/bmi2/attacks.cpp:19:
src/attacks/bmi2/../../util/../arch.h:93:45: warning: use of ‘std::hardware_destructive_interference_size’ [-Winterference-size]
   93 |         constexpr auto CacheLineSize = std::hardware_destructive_interference_size;
      |                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/attacks/bmi2/../../util/../arch.h:93:45: note: its value can vary between compiler versions or with different ‘-mtune’ or ‘-mcpu’ flags
src/attacks/bmi2/../../util/../arch.h:93:45: note: if this use is part of a public ABI, change it to instead use a constant variable you define
src/attacks/bmi2/../../util/../arch.h:93:45: note: the default value for the current CPU tuning is 64 bytes
src/attacks/bmi2/../../util/../arch.h:93:45: note: you can stabilize this value with ‘--param hardware_destructive_interference_size=64’, or disable this warning with ‘-Wno-interference-size’
make: *** [Makefile:139: Stormphrax-95B4EBEB] Error 1