In file included from main.cpp:3: include/nbt2.hpp:235:36: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts' 235 | inline auto byteswap(std::integral auto val) noexcept { | ^~~~ include/nbt2.hpp:235:27: error: 'integral' is not a member of 'std'; did you mean 'internal'? 235 | inline auto byteswap(std::integral auto val) noexcept { | ^~~~~~~~ | internal include/nbt2.hpp:235:13: error: non-function 'nbt::detail::byteswap' declared as implicit template 235 | inline auto byteswap(std::integral auto val) noexcept { | ^~~~~~~~ include/nbt2.hpp:235:46: error: expected ',' or ';' before 'noexcept' 235 | inline auto byteswap(std::integral auto val) noexcept { | ^~~~~~~~ include/nbt2.hpp:242:35: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts' 242 | inline auto nbeswap(std::integral auto val) noexcept { | ^~~~ include/nbt2.hpp:242:26: error: 'integral' is not a member of 'std'; did you mean 'internal'? 242 | inline auto nbeswap(std::integral auto val) noexcept { | ^~~~~~~~ | internal include/nbt2.hpp:242:13: error: non-function 'nbt::detail::nbeswap' declared as implicit template 242 | inline auto nbeswap(std::integral auto val) noexcept { | ^~~~~~~ include/nbt2.hpp:242:45: error: expected ',' or ';' before 'noexcept' 242 | inline auto nbeswap(std::integral auto val) noexcept { | ^~~~~~~~ include/nbt2.hpp:249:11: error: 'std::integral' has not been declared 249 | template T decode(std::istream& buf) { | ^~~ include/nbt2.hpp:249:28: error: 'T' does not name a type 249 | template T decode(std::istream& buf) { | ^ include/nbt2.hpp:255:11: error: 'std::integral' has not been declared 255 | template void encode(std::ostream& buf, const T val) { | ^~~ include/nbt2.hpp:255:65: error: 'T' does not name a type 255 | template void encode(std::ostream& buf, const T val) { | ^ include/nbt2.hpp: In function 'void nbt::detail::encode(std::ostream&, int)': include/nbt2.hpp:256:24: error: 'T' was not declared in this scope 256 | std::make_unsigned_t out {nbeswap(val)}; | ^ include/nbt2.hpp:256:25: error: template argument 1 is invalid 256 | std::make_unsigned_t out {nbeswap(val)}; | ^ include/nbt2.hpp: At global scope: include/nbt2.hpp:260:11: error: 'std::floating_point' has not been declared 260 | template T decode(std::istream& buf) { | ^~~ include/nbt2.hpp:260:34: error: 'T' does not name a type 260 | template T decode(std::istream& buf) { | ^ include/nbt2.hpp:267:11: error: 'std::floating_point' has not been declared 267 | template void encode(std::ostream& buf, const T val) { | ^~~ include/nbt2.hpp:267:71: error: 'T' does not name a type 267 | template void encode(std::ostream& buf, const T val) { | ^ include/nbt2.hpp:267:39: error: redefinition of 'template< > void nbt::detail::encode(std::ostream&, int)' 267 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: 'template< > void nbt::detail::encode(std::ostream&, int)' previously declared here 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:274:11: error: 'std::integral' has not been declared 274 | template std::vector decode_array(std::istream& buf) { | ^~~ include/nbt2.hpp:274:40: error: 'T' was not declared in this scope 274 | template std::vector decode_array(std::istream& buf) { | ^ include/nbt2.hpp:274:41: error: template argument 1 is invalid 274 | template std::vector decode_array(std::istream& buf) { | ^ include/nbt2.hpp:274:41: error: template argument 2 is invalid include/nbt2.hpp: In function 'int nbt::detail::decode_array(std::istream&)': include/nbt2.hpp:277:15: error: 'T' was not declared in this scope 277 | std::vector vec(nbeswap(len)); | ^ include/nbt2.hpp:277:16: error: template argument 1 is invalid 277 | std::vector vec(nbeswap(len)); | ^ include/nbt2.hpp:277:16: error: template argument 2 is invalid include/nbt2.hpp:278:18: error: there are no arguments to 'begin' that depend on a template parameter, so a declaration of 'begin' must be available [-fpermissive] 278 | for(auto& el : vec) { | ^~~ include/nbt2.hpp:278:18: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated) include/nbt2.hpp:278:18: error: there are no arguments to 'end' that depend on a template parameter, so a declaration of 'end' must be available [-fpermissive] include/nbt2.hpp: At global scope: include/nbt2.hpp:285:11: error: 'std::integral' has not been declared 285 | template | ^~~ include/nbt2.hpp:286:56: error: 'T' was not declared in this scope 286 | void encode_array(std::ostream& buf, const std::vector& vec) { | ^ include/nbt2.hpp:286:57: error: template argument 1 is invalid 286 | void encode_array(std::ostream& buf, const std::vector& vec) { | ^ include/nbt2.hpp:286:57: error: template argument 2 is invalid include/nbt2.hpp: In function 'void nbt::detail::encode_array(std::ostream&, const int&)': include/nbt2.hpp:287:60: error: request for member 'size' in 'vec', which is of non-class type 'const int' 287 | std::uint32_t len {nbeswap(static_cast(vec.size()))}; | ^~~~ include/nbt2.hpp:289:17: error: there are no arguments to 'begin' that depend on a template parameter, so a declaration of 'begin' must be available [-fpermissive] 289 | for(auto el : vec) { | ^~~ include/nbt2.hpp:289:17: error: there are no arguments to 'end' that depend on a template parameter, so a declaration of 'end' must be available [-fpermissive] include/nbt2.hpp: At global scope: include/nbt2.hpp:295:42: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts' 295 | void print_array(std::ostream& os, const auto& vec) { | ^~~~ include/nbt2.hpp: In function 'nbt::TagString nbt::detail::decode_string(std::istream&)': include/nbt2.hpp:308:21: error: 'decode' was not declared in this scope; did you mean 'encode'? 308 | std::int16_t len {decode(buf)}; | ^~~~~~ | encode include/nbt2.hpp:308:36: error: expected primary-expression before '>' token 308 | std::int16_t len {decode(buf)}; | ^ include/nbt2.hpp: In function 'void nbt::detail::encode_string(std::ostream&, const TagString&)': include/nbt2.hpp:315:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagShort)' 315 | encode(buf, static_cast(str.size())); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp: In function 'nbt::TagList nbt::detail::decode_list(std::istream&)': include/nbt2.hpp:347:21: error: 'decode' was not declared in this scope; did you mean 'encode'? 347 | std::int8_t type {decode(buf)}; | ^~~~~~ | encode include/nbt2.hpp:347:35: error: expected primary-expression before '>' token 347 | std::int8_t type {decode(buf)}; | ^ include/nbt2.hpp:348:34: error: expected primary-expression before '>' token 348 | std::int32_t len {decode(buf)}; | ^ include/nbt2.hpp:360:24: error: expected primary-expression before '>' token 360 | val = decode(buf); \ | ^ include/nbt2.hpp:321:3: note: in expansion of macro 'X' 321 | macro(TAG_BYTE, TagByte) \ | ^~~~~ include/nbt2.hpp:363:7: note: in expansion of macro 'ALL_NUMERIC' 363 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:360:24: error: expected primary-expression before '>' token 360 | val = decode(buf); \ | ^ include/nbt2.hpp:322:3: note: in expansion of macro 'X' 322 | macro(TAG_SHORT, TagShort) \ | ^~~~~ include/nbt2.hpp:363:7: note: in expansion of macro 'ALL_NUMERIC' 363 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:360:24: error: expected primary-expression before '>' token 360 | val = decode(buf); \ | ^ include/nbt2.hpp:323:3: note: in expansion of macro 'X' 323 | macro(TAG_INT, TagInt) \ | ^~~~~ include/nbt2.hpp:363:7: note: in expansion of macro 'ALL_NUMERIC' 363 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:360:24: error: expected primary-expression before '>' token 360 | val = decode(buf); \ | ^ include/nbt2.hpp:324:3: note: in expansion of macro 'X' 324 | macro(TAG_LONG, TagLong) \ | ^~~~~ include/nbt2.hpp:363:7: note: in expansion of macro 'ALL_NUMERIC' 363 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:360:24: error: expected primary-expression before '>' token 360 | val = decode(buf); \ | ^ include/nbt2.hpp:325:3: note: in expansion of macro 'X' 325 | macro(TAG_FLOAT, TagFloat) \ | ^~~~~ include/nbt2.hpp:363:7: note: in expansion of macro 'ALL_NUMERIC' 363 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:360:24: error: expected primary-expression before '>' token 360 | val = decode(buf); \ | ^ include/nbt2.hpp:326:3: note: in expansion of macro 'X' 326 | macro(TAG_DOUBLE, TagDouble) | ^~~~~ include/nbt2.hpp:363:7: note: in expansion of macro 'ALL_NUMERIC' 363 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:370:36: error: no matching function for call to 'decode_array(std::istream&)' 370 | val = decode_array(buf); \ | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~ include/nbt2.hpp:329:3: note: in expansion of macro 'X' 329 | macro(TAG_BYTE_ARRAY, TagByteArray, TagByte) \ | ^~~~~ include/nbt2.hpp:373:7: note: in expansion of macro 'ALL_ARRAYS' 373 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:274:43: note: candidate: 'template< > int nbt::detail::decode_array(std::istream&)' 274 | template std::vector decode_array(std::istream& buf) { | ^~~~~~~~~~~~ include/nbt2.hpp:274:43: note: template argument deduction/substitution failed: include/nbt2.hpp:370:36: error: no matching function for call to 'decode_array(std::istream&)' 370 | val = decode_array(buf); \ | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~ include/nbt2.hpp:330:3: note: in expansion of macro 'X' 330 | macro(TAG_INT_ARRAY, TagIntArray, TagInt) \ | ^~~~~ include/nbt2.hpp:373:7: note: in expansion of macro 'ALL_ARRAYS' 373 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:274:43: note: candidate: 'template< > int nbt::detail::decode_array(std::istream&)' 274 | template std::vector decode_array(std::istream& buf) { | ^~~~~~~~~~~~ include/nbt2.hpp:274:43: note: template argument deduction/substitution failed: include/nbt2.hpp:370:36: error: no matching function for call to 'decode_array(std::istream&)' 370 | val = decode_array(buf); \ | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~ include/nbt2.hpp:331:3: note: in expansion of macro 'X' 331 | macro(TAG_LONG_ARRAY, TagLongArray, TagLong) | ^~~~~ include/nbt2.hpp:373:7: note: in expansion of macro 'ALL_ARRAYS' 373 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:274:43: note: candidate: 'template< > int nbt::detail::decode_array(std::istream&)' 274 | template std::vector decode_array(std::istream& buf) { | ^~~~~~~~~~~~ include/nbt2.hpp:274:43: note: template argument deduction/substitution failed: include/nbt2.hpp: In function 'void nbt::detail::encode_list(std::ostream&, const nbt::TagList&)': include/nbt2.hpp:396:18: error: no matching function for call to 'encode(std::ostream&, nbt::TagByte)' 396 | encode(buf, static_cast(list.index())); | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:399:21: error: no matching function for call to 'encode(std::ostream&, int)' 399 | encode(buf, 0); | ~~~~~~~~~~~~~~^~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:405:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagInt)' 405 | encode(buf, static_cast(vec.size())); \ | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:321:3: note: in expansion of macro 'X' 321 | macro(TAG_BYTE, TagByte) \ | ^~~~~ include/nbt2.hpp:409:7: note: in expansion of macro 'ALL_NUMERIC' 409 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:407:19: error: no matching function for call to 'encode(std::ostream&, const signed char&)' 407 | encode(buf, val); \ | ~~~~~~~~~~~~^~~~~~~~~~ include/nbt2.hpp:321:3: note: in expansion of macro 'X' 321 | macro(TAG_BYTE, TagByte) \ | ^~~~~ include/nbt2.hpp:409:7: note: in expansion of macro 'ALL_NUMERIC' 409 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:405:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagInt)' 405 | encode(buf, static_cast(vec.size())); \ | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:322:3: note: in expansion of macro 'X' 322 | macro(TAG_SHORT, TagShort) \ | ^~~~~ include/nbt2.hpp:409:7: note: in expansion of macro 'ALL_NUMERIC' 409 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:407:19: error: no matching function for call to 'encode(std::ostream&, const short int&)' 407 | encode(buf, val); \ | ~~~~~~~~~~~~^~~~~~~~~~ include/nbt2.hpp:322:3: note: in expansion of macro 'X' 322 | macro(TAG_SHORT, TagShort) \ | ^~~~~ include/nbt2.hpp:409:7: note: in expansion of macro 'ALL_NUMERIC' 409 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:405:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagInt)' 405 | encode(buf, static_cast(vec.size())); \ | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:323:3: note: in expansion of macro 'X' 323 | macro(TAG_INT, TagInt) \ | ^~~~~ include/nbt2.hpp:409:7: note: in expansion of macro 'ALL_NUMERIC' 409 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:407:19: error: no matching function for call to 'encode(std::ostream&, const int&)' 407 | encode(buf, val); \ | ~~~~~~~~~~~~^~~~~~~~~~ include/nbt2.hpp:323:3: note: in expansion of macro 'X' 323 | macro(TAG_INT, TagInt) \ | ^~~~~ include/nbt2.hpp:409:7: note: in expansion of macro 'ALL_NUMERIC' 409 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:405:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagInt)' 405 | encode(buf, static_cast(vec.size())); \ | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:324:3: note: in expansion of macro 'X' 324 | macro(TAG_LONG, TagLong) \ | ^~~~~ include/nbt2.hpp:409:7: note: in expansion of macro 'ALL_NUMERIC' 409 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:407:19: error: no matching function for call to 'encode(std::ostream&, const long long int&)' 407 | encode(buf, val); \ | ~~~~~~~~~~~~^~~~~~~~~~ include/nbt2.hpp:324:3: note: in expansion of macro 'X' 324 | macro(TAG_LONG, TagLong) \ | ^~~~~ include/nbt2.hpp:409:7: note: in expansion of macro 'ALL_NUMERIC' 409 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:405:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagInt)' 405 | encode(buf, static_cast(vec.size())); \ | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:325:3: note: in expansion of macro 'X' 325 | macro(TAG_FLOAT, TagFloat) \ | ^~~~~ include/nbt2.hpp:409:7: note: in expansion of macro 'ALL_NUMERIC' 409 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:407:19: error: no matching function for call to 'encode(std::ostream&, const float&)' 407 | encode(buf, val); \ | ~~~~~~~~~~~~^~~~~~~~~~ include/nbt2.hpp:325:3: note: in expansion of macro 'X' 325 | macro(TAG_FLOAT, TagFloat) \ | ^~~~~ include/nbt2.hpp:409:7: note: in expansion of macro 'ALL_NUMERIC' 409 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:405:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagInt)' 405 | encode(buf, static_cast(vec.size())); \ | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:326:3: note: in expansion of macro 'X' 326 | macro(TAG_DOUBLE, TagDouble) | ^~~~~ include/nbt2.hpp:409:7: note: in expansion of macro 'ALL_NUMERIC' 409 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:407:19: error: no matching function for call to 'encode(std::ostream&, const double&)' 407 | encode(buf, val); \ | ~~~~~~~~~~~~^~~~~~~~~~ include/nbt2.hpp:326:3: note: in expansion of macro 'X' 326 | macro(TAG_DOUBLE, TagDouble) | ^~~~~ include/nbt2.hpp:409:7: note: in expansion of macro 'ALL_NUMERIC' 409 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:415:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagInt)' 415 | encode(buf, static_cast(vec.size())); \ | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:329:3: note: in expansion of macro 'X' 329 | macro(TAG_BYTE_ARRAY, TagByteArray, TagByte) \ | ^~~~~ include/nbt2.hpp:419:7: note: in expansion of macro 'ALL_ARRAYS' 419 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:417:30: error: no matching function for call to 'encode_array(std::ostream&, const std::vector&)' 417 | encode_array(buf, val); \ | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ include/nbt2.hpp:329:3: note: in expansion of macro 'X' 329 | macro(TAG_BYTE_ARRAY, TagByteArray, TagByte) \ | ^~~~~ include/nbt2.hpp:419:7: note: in expansion of macro 'ALL_ARRAYS' 419 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:286:6: note: candidate: 'template< > void nbt::detail::encode_array(std::ostream&, const int&)' 286 | void encode_array(std::ostream& buf, const std::vector& vec) { | ^~~~~~~~~~~~ include/nbt2.hpp:286:6: note: template argument deduction/substitution failed: include/nbt2.hpp:415:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagInt)' 415 | encode(buf, static_cast(vec.size())); \ | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:330:3: note: in expansion of macro 'X' 330 | macro(TAG_INT_ARRAY, TagIntArray, TagInt) \ | ^~~~~ include/nbt2.hpp:419:7: note: in expansion of macro 'ALL_ARRAYS' 419 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:417:30: error: no matching function for call to 'encode_array(std::ostream&, const std::vector&)' 417 | encode_array(buf, val); \ | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ include/nbt2.hpp:330:3: note: in expansion of macro 'X' 330 | macro(TAG_INT_ARRAY, TagIntArray, TagInt) \ | ^~~~~ include/nbt2.hpp:419:7: note: in expansion of macro 'ALL_ARRAYS' 419 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:286:6: note: candidate: 'template< > void nbt::detail::encode_array(std::ostream&, const int&)' 286 | void encode_array(std::ostream& buf, const std::vector& vec) { | ^~~~~~~~~~~~ include/nbt2.hpp:286:6: note: template argument deduction/substitution failed: include/nbt2.hpp:415:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagInt)' 415 | encode(buf, static_cast(vec.size())); \ | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:331:3: note: in expansion of macro 'X' 331 | macro(TAG_LONG_ARRAY, TagLongArray, TagLong) | ^~~~~ include/nbt2.hpp:419:7: note: in expansion of macro 'ALL_ARRAYS' 419 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:417:30: error: no matching function for call to 'encode_array(std::ostream&, const std::vector&)' 417 | encode_array(buf, val); \ | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ include/nbt2.hpp:331:3: note: in expansion of macro 'X' 331 | macro(TAG_LONG_ARRAY, TagLongArray, TagLong) | ^~~~~ include/nbt2.hpp:419:7: note: in expansion of macro 'ALL_ARRAYS' 419 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:286:6: note: candidate: 'template< > void nbt::detail::encode_array(std::ostream&, const int&)' 286 | void encode_array(std::ostream& buf, const std::vector& vec) { | ^~~~~~~~~~~~ include/nbt2.hpp:286:6: note: template argument deduction/substitution failed: include/nbt2.hpp:425:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagInt)' 425 | encode(buf, static_cast(vec.size())); \ | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:335:3: note: in expansion of macro 'X' 335 | macro(TAG_STRING, TagString, _string) \ | ^~~~~ include/nbt2.hpp:429:7: note: in expansion of macro 'ALL_OTHERS' 429 | ALL_OTHERS(X) | ^~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:425:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagInt)' 425 | encode(buf, static_cast(vec.size())); \ | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:336:3: note: in expansion of macro 'X' 336 | macro(TAG_LIST, TagList, _list) \ | ^~~~~ include/nbt2.hpp:429:7: note: in expansion of macro 'ALL_OTHERS' 429 | ALL_OTHERS(X) | ^~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:425:19: error: no matching function for call to 'encode(std::ostream&, nbt::TagInt)' 425 | encode(buf, static_cast(vec.size())); \ | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:337:3: note: in expansion of macro 'X' 337 | macro(TAG_COMPOUND, TagCompound, _compound) | ^~~~~ include/nbt2.hpp:429:7: note: in expansion of macro 'ALL_OTHERS' 429 | ALL_OTHERS(X) | ^~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp: In function 'nbt::TagCompound nbt::detail::decode_compound(std::istream&)': include/nbt2.hpp:514:17: error: 'decode' was not declared in this scope; did you mean 'encode'? 514 | TagByte type {decode(buf)}; | ^~~~~~ | encode include/nbt2.hpp:514:31: error: expected primary-expression before '>' token 514 | TagByte type {decode(buf)}; | ^ include/nbt2.hpp:515:47: error: expected primary-expression before '>' token 515 | for(; type != TAG_END; type = decode(buf)) { | ^ include/nbt2.hpp:520:32: error: expected primary-expression before '>' token 520 | tag.base[key] = decode(buf); \ | ^ include/nbt2.hpp:321:3: note: in expansion of macro 'X' 321 | macro(TAG_BYTE, TagByte) \ | ^~~~~ include/nbt2.hpp:522:7: note: in expansion of macro 'ALL_NUMERIC' 522 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:520:32: error: expected primary-expression before '>' token 520 | tag.base[key] = decode(buf); \ | ^ include/nbt2.hpp:322:3: note: in expansion of macro 'X' 322 | macro(TAG_SHORT, TagShort) \ | ^~~~~ include/nbt2.hpp:522:7: note: in expansion of macro 'ALL_NUMERIC' 522 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:520:32: error: expected primary-expression before '>' token 520 | tag.base[key] = decode(buf); \ | ^ include/nbt2.hpp:323:3: note: in expansion of macro 'X' 323 | macro(TAG_INT, TagInt) \ | ^~~~~ include/nbt2.hpp:522:7: note: in expansion of macro 'ALL_NUMERIC' 522 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:520:32: error: expected primary-expression before '>' token 520 | tag.base[key] = decode(buf); \ | ^ include/nbt2.hpp:324:3: note: in expansion of macro 'X' 324 | macro(TAG_LONG, TagLong) \ | ^~~~~ include/nbt2.hpp:522:7: note: in expansion of macro 'ALL_NUMERIC' 522 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:520:32: error: expected primary-expression before '>' token 520 | tag.base[key] = decode(buf); \ | ^ include/nbt2.hpp:325:3: note: in expansion of macro 'X' 325 | macro(TAG_FLOAT, TagFloat) \ | ^~~~~ include/nbt2.hpp:522:7: note: in expansion of macro 'ALL_NUMERIC' 522 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:520:32: error: expected primary-expression before '>' token 520 | tag.base[key] = decode(buf); \ | ^ include/nbt2.hpp:326:3: note: in expansion of macro 'X' 326 | macro(TAG_DOUBLE, TagDouble) | ^~~~~ include/nbt2.hpp:522:7: note: in expansion of macro 'ALL_NUMERIC' 522 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:527:44: error: no matching function for call to 'decode_array(std::istream&)' 527 | tag.base[key] = decode_array(buf); \ | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~ include/nbt2.hpp:329:3: note: in expansion of macro 'X' 329 | macro(TAG_BYTE_ARRAY, TagByteArray, TagByte) \ | ^~~~~ include/nbt2.hpp:529:7: note: in expansion of macro 'ALL_ARRAYS' 529 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:274:43: note: candidate: 'template< > int nbt::detail::decode_array(std::istream&)' 274 | template std::vector decode_array(std::istream& buf) { | ^~~~~~~~~~~~ include/nbt2.hpp:274:43: note: template argument deduction/substitution failed: include/nbt2.hpp:527:44: error: no matching function for call to 'decode_array(std::istream&)' 527 | tag.base[key] = decode_array(buf); \ | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~ include/nbt2.hpp:330:3: note: in expansion of macro 'X' 330 | macro(TAG_INT_ARRAY, TagIntArray, TagInt) \ | ^~~~~ include/nbt2.hpp:529:7: note: in expansion of macro 'ALL_ARRAYS' 529 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:274:43: note: candidate: 'template< > int nbt::detail::decode_array(std::istream&)' 274 | template std::vector decode_array(std::istream& buf) { | ^~~~~~~~~~~~ include/nbt2.hpp:274:43: note: template argument deduction/substitution failed: include/nbt2.hpp:527:44: error: no matching function for call to 'decode_array(std::istream&)' 527 | tag.base[key] = decode_array(buf); \ | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~ include/nbt2.hpp:331:3: note: in expansion of macro 'X' 331 | macro(TAG_LONG_ARRAY, TagLongArray, TagLong) | ^~~~~ include/nbt2.hpp:529:7: note: in expansion of macro 'ALL_ARRAYS' 529 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:274:43: note: candidate: 'template< > int nbt::detail::decode_array(std::istream&)' 274 | template std::vector decode_array(std::istream& buf) { | ^~~~~~~~~~~~ include/nbt2.hpp:274:43: note: template argument deduction/substitution failed: include/nbt2.hpp: In function 'void nbt::detail::encode_compound(std::ostream&, const nbt::TagCompound&)': include/nbt2.hpp:547:20: error: no matching function for call to 'encode(std::ostream&, nbt::TagByte)' 547 | encode(buf, static_cast(tag.index())); | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:553:17: error: no matching function for call to 'encode(std::ostream&, const signed char&)' 553 | encode(buf, std::get(tag)); \ | ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:321:3: note: in expansion of macro 'X' 321 | macro(TAG_BYTE, TagByte) \ | ^~~~~ include/nbt2.hpp:555:7: note: in expansion of macro 'ALL_NUMERIC' 555 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:553:17: error: no matching function for call to 'encode(std::ostream&, const short int&)' 553 | encode(buf, std::get(tag)); \ | ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:322:3: note: in expansion of macro 'X' 322 | macro(TAG_SHORT, TagShort) \ | ^~~~~ include/nbt2.hpp:555:7: note: in expansion of macro 'ALL_NUMERIC' 555 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:553:17: error: no matching function for call to 'encode(std::ostream&, const int&)' 553 | encode(buf, std::get(tag)); \ | ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:323:3: note: in expansion of macro 'X' 323 | macro(TAG_INT, TagInt) \ | ^~~~~ include/nbt2.hpp:555:7: note: in expansion of macro 'ALL_NUMERIC' 555 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:553:17: error: no matching function for call to 'encode(std::ostream&, const long long int&)' 553 | encode(buf, std::get(tag)); \ | ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:324:3: note: in expansion of macro 'X' 324 | macro(TAG_LONG, TagLong) \ | ^~~~~ include/nbt2.hpp:555:7: note: in expansion of macro 'ALL_NUMERIC' 555 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:553:17: error: no matching function for call to 'encode(std::ostream&, const float&)' 553 | encode(buf, std::get(tag)); \ | ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:325:3: note: in expansion of macro 'X' 325 | macro(TAG_FLOAT, TagFloat) \ | ^~~~~ include/nbt2.hpp:555:7: note: in expansion of macro 'ALL_NUMERIC' 555 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:553:17: error: no matching function for call to 'encode(std::ostream&, const double&)' 553 | encode(buf, std::get(tag)); \ | ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:326:3: note: in expansion of macro 'X' 326 | macro(TAG_DOUBLE, TagDouble) | ^~~~~ include/nbt2.hpp:555:7: note: in expansion of macro 'ALL_NUMERIC' 555 | ALL_NUMERIC(X) | ^~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:560:28: error: no matching function for call to 'encode_array(std::ostream&, const std::vector&)' 560 | encode_array(buf, std::get(tag)); \ | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:329:3: note: in expansion of macro 'X' 329 | macro(TAG_BYTE_ARRAY, TagByteArray, TagByte) \ | ^~~~~ include/nbt2.hpp:562:7: note: in expansion of macro 'ALL_ARRAYS' 562 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:286:6: note: candidate: 'template< > void nbt::detail::encode_array(std::ostream&, const int&)' 286 | void encode_array(std::ostream& buf, const std::vector& vec) { | ^~~~~~~~~~~~ include/nbt2.hpp:286:6: note: template argument deduction/substitution failed: include/nbt2.hpp:560:28: error: no matching function for call to 'encode_array(std::ostream&, const std::vector&)' 560 | encode_array(buf, std::get(tag)); \ | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:330:3: note: in expansion of macro 'X' 330 | macro(TAG_INT_ARRAY, TagIntArray, TagInt) \ | ^~~~~ include/nbt2.hpp:562:7: note: in expansion of macro 'ALL_ARRAYS' 562 | ALL_ARRAYS(X) | ^~~~~~~~~~ include/nbt2.hpp:286:6: note: candidate: 'template< > void nbt::detail::encode_array(std::ostream&, const int&)' 286 | void encode_array(std::ostream& buf, const std::vector& vec) { | ^~~~~~~~~~~~ include/nbt2.hpp:286:6: note: template argument deduction/substitution failed: include/nbt2.hpp:560:28: error: no matching function for call to 'encode_array(std::ostream&, const std::vector&)' 560 | encode_array(buf, std::get(tag)); \ | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:631:44: error: expected primary-expression before '>' token 631 | TagByte type {nbt::detail::decode(buf)}; | ^ include/nbt2.hpp: In member function 'void nbt::NBT::encode(std::ostream&) const': include/nbt2.hpp:641:28: error: no matching function for call to 'encode(std::ostream&, nbt::TagType)' 641 | detail::encode(buf, TAG_END); | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: include/nbt2.hpp:643:28: error: no matching function for call to 'encode(std::ostream&, nbt::TagType)' 643 | detail::encode(buf, TAG_COMPOUND); | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~ include/nbt2.hpp:255:33: note: candidate: 'template< > void nbt::detail::encode(std::ostream&, int)' 255 | template void encode(std::ostream& buf, const T val) { | ^~~~~~ include/nbt2.hpp:255:33: note: template argument deduction/substitution failed: