Git Product home page Git Product logo

avr-libstdcpp's People

Contributors

chris-durand avatar ckormanyos avatar dhebbeker avatar rleh avatar salkinium avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

avr-libstdcpp's Issues

ICE when using std::accumulate with AVR-GCC 12.1.0

Hi, I am using AVR-GCC 12.1.0 from https://blog.zakkemble.net/avr-gcc-builds/

When I tried to compile the following test code for my arduino uno, an ICE occurred,

The code is

#include <Arduino.h>
#include <array>
#include <numeric>

std::array<int, 3> array {1,2,3};

void setup() {
    Serial.begin(115200);
    Serial.println("Hello world");
}

void loop() {
    auto sum = std::accumulate(array.cbegin(), array.cend(), 0);
    Serial.print("Number is ");
    Serial.println(sum);
    delay(1000);
}

The error I encountered is

Compiling .pio\build\uno\src\main.cpp.o
Linking .pio\build\uno\firmware.elf
during RTL pass: combine
C:\Users\10614\.platformio\packages\framework-arduino-avr\cores\arduino\main.cpp: In function 'main':
C:\Users\10614\.platformio\packages\framework-arduino-avr\cores\arduino\main.cpp:51:1: internal compiler error: in add_clobbers, at config/avr/avr-dimode.md:2705
   51 | }
      | ^
libbacktrace could not find executable to open
Please submit a full bug report, with preprocessed source (by using -freport-bug).
See <https://gcc.gnu.org/bugs/> for instructions.
lto-wrapper.exe: fatal error: avr-g++ returned 1 exit status
compilation terminated.
c:/users/10614/.platformio/packages/toolchain-atmelavr/bin/../lib/gcc/avr/12.1.0/../../../../avr/bin/ld.exe: error: lto-wrapper failed
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\uno\firmware.elf] Error 1

This error does not occur when using AVR-GCC 11.1.0 (from the same site). I wonder is this caused by this lib or is this a regression bug in GCC or maybe I am doing something wrong?

Thank you

Try for adaption to down to avr-gcc 5.2

This is an experimental ticket.

Several important domains still use avr-gcc 5.2, 5.3, or 5.4.

We do, however, find that at least one compiler-intrinsic (i.e., __is_constructible used often in <type_traits>) is unavailable.

1e245c1 works around this phenomenon. It is worth a try to see if the very-detailesmanual re-write of certain std::is_constructible codes might, in fact, with the workaround this for even GCC 5.2.

That manual implementation of __is_constructible was, however, (or so it seems) subsequently removed.

Try to refactor the preprocessor logic here to give it a try on GCC 5.2 using that previous manual implementatoin.

Examples do not build

For example in numeric I do make:

avr-g++ -c -std=c++17 -O2 -Wall -Wextra -pedantic -fno-exceptions -fno-rtti -fno-unwind-tables -fno-threadsafe-statics -Wshadow -Wcast-qual -Wpointer-arith -Wundef -mmcu=atmega328p -I../../include numeric.cpp -o build/numeric.cpp.o
In file included from ../../include/bits/move.h:57:0,
                 from ../../include/bits/stl_pair.h:59,
                 from ../../include/utility:70,
                 from ../../include/array:38,
                 from numeric.cpp:12:
../../include/type_traits:901:62: error: there are no arguments to ‘__is_constructible’ that depend on a template parameter, so a declaration of ‘__is_constructible’ must be available [-fpermissive]
     : public __bool_constant<__is_constructible(_Tp, _Args...)>
                                                              ^
../../include/type_traits:901:62: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
../../include/type_traits:901:63: error: template argument 1 is invalid
     : public __bool_constant<__is_constructible(_Tp, _Args...)>
                                                               ^
../../include/type_traits:1003:68: error: there are no arguments to ‘__is_constructible’ that depend on a template parameter, so a declaration of ‘__is_constructible’ must be available [-fpermissive]
       = __is_nt_constructible_impl<__is_constructible(_Tp, _Args...),
                                                                    ^
../../include/type_traits:1004:21: error: template argument 1 is invalid
        _Tp, _Args...>;
                     ^
../../include/type_traits:1009:45: error: expected template-name before ‘<’ token
     : public __is_nothrow_constructible_impl<_Tp, _Args...>::type
                                             ^
../../include/type_traits:1009:45: error: expected ‘{’ before ‘<’ token
../../include/type_traits:1009:45: error: expected unqualified-id before ‘<’ token
../../include/type_traits:1018:45: error: expected template-name before ‘<’ token
     : public __is_nothrow_constructible_impl<_Tp>::type
                                             ^
../../include/type_traits:1018:45: error: expected ‘{’ before ‘<’ token
../../include/type_traits:1018:45: error: expected unqualified-id before ‘<’ token
../../include/type_traits:1034:45: error: expected template-name before ‘<’ token
     : public __is_nothrow_constructible_impl<_Tp, const _Tp&>
                                             ^
../../include/type_traits:1034:45: error: expected ‘{’ before ‘<’ token
../../include/type_traits:1034:45: error: expected unqualified-id before ‘<’ token
../../include/type_traits:1055:45: error: expected template-name before ‘<’ token
     : public __is_nothrow_constructible_impl<_Tp, _Tp&&>
                                             ^
../../include/type_traits:1055:45: error: expected ‘{’ before ‘<’ token
../../include/type_traits:1055:45: error: expected unqualified-id before ‘<’ token
../../include/type_traits:1070:54: error: there are no arguments to ‘__is_assignable’ that depend on a template parameter, so a declaration of ‘__is_assignable’ must be available [-fpermissive]
     : public __bool_constant<__is_assignable(_Tp, _Up)>
                                                      ^
../../include/type_traits:1070:55: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp, _Up)>
                                                       ^
../../include/type_traits:1085:62: error: there are no arguments to ‘__is_assignable’ that depend on a template parameter, so a declaration of ‘__is_assignable’ must be available [-fpermissive]
     : public __bool_constant<__is_assignable(_Tp&, const _Tp&)>
                                                              ^
../../include/type_traits:1085:63: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp&, const _Tp&)>
                                                               ^
../../include/type_traits:1106:57: error: there are no arguments to ‘__is_assignable’ that depend on a template parameter, so a declaration of ‘__is_assignable’ must be available [-fpermissive]
     : public __bool_constant<__is_assignable(_Tp&, _Tp&&)>
                                                         ^
../../include/type_traits:1106:58: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp&, _Tp&&)>
                                                          ^
../../include/type_traits:1125:61: error: there are no arguments to ‘__is_assignable’ that depend on a template parameter, so a declaration of ‘__is_assignable’ must be available [-fpermissive]
     : public __and_<__bool_constant<__is_assignable(_Tp, _Up)>,
                                                             ^
../../include/type_traits:1125:62: error: template argument 1 is invalid
     : public __and_<__bool_constant<__is_assignable(_Tp, _Up)>,
                                                              ^
../../include/type_traits:1126:39: error: template argument 1 is invalid
       __is_nt_assignable_impl<_Tp, _Up>>
                                       ^
In file included from ../../include/array:38:0,
                 from numeric.cpp:12:
../../include/utility:316:54: error: there are no arguments to ‘__integer_pack’ that depend on a template parameter, so a declaration of ‘__integer_pack’ must be available [-fpermissive]
       using __type = _Index_tuple<__integer_pack(_Num)...>;
                                                      ^
../../include/utility:316:55: error: expansion pattern ‘__integer_pack(_Num)’ contains no argument packs
       using __type = _Index_tuple<__integer_pack(_Num)...>;
                                                       ^
../../include/utility:316:58: error: template argument 1 is invalid
       using __type = _Index_tuple<__integer_pack(_Num)...>;
                                                          ^
../../include/utility:338:51: error: expansion pattern ‘__integer_pack(_Num)’ contains no argument packs
       = integer_sequence<_Tp, __integer_pack(_Num)...>;
                                                   ^
../../include/utility:338:54: error: template argument 2 is invalid
       = integer_sequence<_Tp, __integer_pack(_Num)...>;
                                                      ^
../../include/utility:349:33: error: ‘make_integer_sequence’ does not name a type
     using make_index_sequence = make_integer_sequence<size_t, _Num>;
                                 ^
../../include/utility:353:32: error: ‘make_index_sequence’ does not name a type
     using index_sequence_for = make_index_sequence<sizeof...(_Types)>;
                                ^
../../include/utility:362:31: error: ‘std::in_place’ declared as an ‘inline’ variable
   inline constexpr in_place_t in_place{};
                               ^
../../include/utility:370:43: error: ‘std::in_place_type’ declared as an ‘inline’ variable
     inline constexpr in_place_type_t<_Tp> in_place_type{};
                                           ^
../../include/utility:378:45: error: ‘std::in_place_index’ declared as an ‘inline’ variable
     inline constexpr in_place_index_t<_Idx> in_place_index{};
                                             ^
In file included from numeric.cpp:13:0:
../../include/numeric: In function ‘_Tp std::reduce(_InputIterator, _InputIterator, _Tp, _BinaryOperation)’:
../../include/numeric:259:21: error: ‘is_invocable_r_v’ was not declared in this scope
       static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, _Tp&>);
                     ^
../../include/numeric:259:41: error: expected primary-expression before ‘,’ token
       static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, _Tp&>);
                                         ^
../../include/numeric:259:43: error: expected string-literal before ‘_BinaryOperation’
       static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, _Tp&>);
                                           ^
../../include/numeric:259:43: error: expected ‘)’ before ‘_BinaryOperation’
../../include/numeric:260:21: error: ‘is_convertible_v’ was not declared in this scope
       static_assert(is_convertible_v<value_type, _Tp>);
                     ^
../../include/numeric:260:48: error: expected primary-expression before ‘,’ token
       static_assert(is_convertible_v<value_type, _Tp>);
                                                ^
../../include/numeric:260:50: error: expected string-literal before ‘_Tp’
       static_assert(is_convertible_v<value_type, _Tp>);
                                                  ^
../../include/numeric:260:50: error: expected ‘)’ before ‘_Tp’
../../include/numeric:261:10: error: expected ‘(’ before ‘constexpr’
       if constexpr (__is_random_access_iter<_InputIterator>::value)
          ^
numeric.cpp:35:1: error: expected ‘}’ at end of input
 }
 ^

Maybe include some/most of `std::chrono::high_resolution_clock`

Nice work on this port. I tried it on the AVR target(s) ckormanyos/real-time-cpp and it worked essentially out-of-the-box.

I'd like to find in your port an almost-complete implementation of std::chrono::high_resolution_clock. You can implement/define everything in that template class except the actual hardware-specific implementation of the subroutine now(). You can see a sample below...

I usually put this in as a skeleton in my self-written implementations of <chrono>, whenever I have made these. After implementing std::chrono::high_resolution_clock, I usually alias steady_clockto be the same. In this particular design paradigm, then, the developer has to actually implement std::shrono::high_resolution_clock::now().

If you're interested, ... you might try something like this... in namespace std in your <chrono> (for C++11 and higher), near the bottom of the file.

  namespace chrono
  {
    class high_resolution_clock
    {
    public:
      // defines the accuracy of the (hardware) high resolution clock
      typedef chrono::microseconds duration;

      typedef duration::rep rep;
      typedef duration::period period;
      typedef chrono::time_point<high_resolution_clock, duration> time_point;

      static std::time_t to_time_t(const time_point& t)
      {
        return std::time_t(duration_cast<chrono::seconds>(t.time_since_epoch()).count());
      }

      static time_point from_time_t(std::time_t t)
      {
        typedef chrono::time_point<high_resolution_clock, seconds> _from;
        return time_point_cast<high_resolution_clock::duration>(_from(chrono::seconds(t)));
      }

      // performance counter is steady, a subsequent call to std::chrono::high_resolution_clock::now()
      // returns always a later timer than a previous call
      static constexpr bool is_steady = true;

      // !!! PLATFORM AND OS SPECIFIC IMPLEMENTATION !!!
      static time_point now() noexcept;
    };

    // use high_resolution_clock as steady_clock
    using steady_clock = high_resolution_clock;
  }

exception specification for new operator does not match previous declaration

The exception specification of the operator new(size_t) should match the one of the previous declaration. The previous declaration is included from ../../include\new.

This mismatch is revealed when compiling the vector example with clang (LLVM 11):

../common/new.cpp:33:1: error: exception specification in declaration does not match previous declaration
operator new(size_t size) _GLIBCXX_USE_NOEXCEPT
^
../../include\new:73:7: note: previous declaration is here
void* operator new(std::size_t) _GLIBCXX_THROW (std::bad_alloc)
      ^
../common/new.cpp:39:1: error: exception specification in declaration does not match previous declaration
operator new[](size_t size) _GLIBCXX_USE_NOEXCEPT
^
../../include\new:75:7: note: previous declaration is here
void* operator new[](std::size_t) _GLIBCXX_THROW (std::bad_alloc)
      ^

invalid options calling avr-size

Using the example Makefile (for vector) fails (with my setup, using AVR GCC compiler) because of an invalid call of avr-size.

$ make
avr-g++ -c -std=c++17 -O2 -Wall -Wextra -pedantic -fno-exceptions -fno-rtti -fno-unwind-tables -fno-threadsafe-statics -Wshadow -Wcast-qual -Wpointer-arith -Wundef -DF_CPU=16000000ul -mmcu=atmega328p -I../common -I../../include ../common/new.cpp -o build/new.cpp.o
avr-g++  -mmcu=atmega328p ./build/main.cpp.o ./build/chrono.cc.o ./build/limits.cc.o ./build/functexcept.cc.o ./build/hash_bytes.cc.o ./build/nothrow.cc.o ./build/cxxabi.cpp.o ./build/uart.cpp.o ./build/new.cpp.o -o ./build/vector-test.elf
avr-objcopy -O ihex -j .data -j .text ./build/vector-test.elf ./build/vector-test.hex
avr-size --mcu=atmega328p -C ./build/vector-test.elf
avr-size: unrecognized option `--mcu=atmega328p'
Usage: avr-size [option(s)] [file(s)]
 Displays the sizes of sections inside binary files
 If no input file(s) are specified, a.out is assumed
 The options are:
  -A|-B     --format={sysv|berkeley}  Select output style (default is berkeley)
  -o|-d|-x  --radix={8|10|16}         Display numbers in octal, decimal or hex
  -t        --totals                  Display the total sizes (Berkeley only)
            --common                  Display total size for *COM* syms
            --target=<bfdname>        Set the binary file format
            @<file>                   Read options from <file>
  -h        --help                    Display this information
  -v        --version                 Display the program's version

avr-size: supported targets: elf32-avr elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex
make: *** [Makefile:42: size] Error 1

Apparently --mcu and -C are not part of the interface (see man page).

Removing those options in the Makefile outputs:

...
avr-size ./build/vector-test.elf
   text    data     bss     dec     hex filename
   3480      46      42    3568     df0 ./build/vector-test.elf

After some research I found, that apparently the Windows AVR GCC distribution by Zak Kemble (the one I use) does not contain the patch for avr-size which is apparently common in other distributions.

There is no error in the Makefile provided. This note may be interesting for other users which (have to 🙄) develop on Windows.

Consider contributing to upstream libstdc++ instead

There is an ongoing project to increase the parts of the C++ Standard Library that are available for freestanding implementations, i.e. those with no OS, so no I/O and no malloc. C++23 already enables all of <tuple>, most of <atomic>, <functional>, std::unique_ptr, and more. For C++26 that will increase to include <algorithm> and more.

This means that upstream libstdc++ will be enabling all those features for freestanding in the near future. Rather than duplicating work, it seems to me that it would benefit everybody if you contributed to that effort to enable those features in upstream libstdc++.

support for gcc 13 - feature requests - compilation error

I've tested with godbolt.org
code:

#include<string_view>
int main(){return 0;}

error:

In file included from /opt/compiler-explorer/libs/avr-libstdcpp/trunk/include/bits/move.h:57,
                 from /opt/compiler-explorer/libs/avr-libstdcpp/trunk/include/bits/stl_pair.h:59,
                 from /opt/compiler-explorer/libs/avr-libstdcpp/trunk/include/bits/stl_algobase.h:64,
                 from /opt/compiler-explorer/libs/avr-libstdcpp/trunk/include/bits/char_traits.h:39,
                 from /opt/compiler-explorer/libs/avr-libstdcpp/trunk/include/string_view:40,
                 from <source>:1:
/opt/compiler-explorer/libs/avr-libstdcpp/trunk/include/type_traits:1487:12: error: expected identifier before '__is_nothrow_convertible'
 1487 |     struct __is_nothrow_convertible
      |            ^~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/libs/avr-libstdcpp/trunk/include/type_traits:1487:12: error: expected unqualified-id before '__is_nothrow_convertible'
/opt/compiler-explorer/libs/avr-libstdcpp/trunk/include/type_traits:2994:66: error: template argument 2 is invalid
 2994 |             __is_nothrow_convertible<typename _Result::type, _Ret>>
      |                                                                  ^~
Compiler returned: 1

For avr-g++ 12 I didn't spot any problems with c++23 flag (for local version on my Linux and on Godbolt)
I just wanted to test befor I install on my PC to check this PR:
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2448r2.html

does not compile

Hi,

your lib looks very promising. Unfortunately there are big problems with it. If I use it with Arduino then the controller always resets.

If I use it in Atmel Studio 7 it always compiles with error messages. Your vector example does not compile either. It doesn't matter if I use an avr-gcc toolchain with gcc 9.3.0 or 11.2.0. Also in the Arduino IDE.

I can include vector without errors, but when I use it, it doesn't compile anymore.

Now I wanted to ask in which IDE do you program? In which environment did you test all this? According to your description it should work with avr-gcc.

2 Examples with Atmel Studio 7.

#include <vector>
#include <cstdio>
#include <algorithm>

int main()
{
    std::vector<uint8_t> test{10, 1, 2, 42, 3};
    test.push_back(4);
    test.erase(test.begin());

    if(auto it = std::find(test.begin(), test.end(), 42); it != test.end()) {
        test.erase(it);
    }
}

Output

Error undefined reference to `operator new(unsigned int)'	avr-libstdcpp-Test_001	<artificial>	1
Error <artificial>:(.text.startup+0x3e): undefined reference to `operator new(unsigned int)'	avr-libstdcpp-Test_001		1
Error <artificial>:(.text.startup+0x6c): undefined reference to `operator delete(void*, unsigned int)'	avr-libstdcpp-Test_001		1
Error <artificial>:(.text.startup+0xd2): undefined reference to `operator delete(void*, unsigned int)'	avr-libstdcpp-Test_001		1
Error C:\Users\Worker\AppData\Local\Temp\cc6G2oHd.ltrans0.ltrans.o: in function `main':	avr-libstdcpp-Test_001		

#include <avr/io.h>
#include <vector>
#include <algorithm>

using namespace std;

vector<int16_t> v1 {1, 2, 3, 4};
vector<int16_t> v3 (19);

int main()
{  }

Output

Error undefined reference to `operator new(unsigned int)'	avr-libstdcpp-Test_001	<artificial>	1
Error <artificial>:(.text.startup+0x8a): undefined reference to `operator new(unsigned int)'	avr-libstdcpp-Test_001		1
Error C:\Users\Worker\AppData\Local\Temp\ccYoUbRD.ltrans0.ltrans.o: in function `std::_Vector_base<int, std::allocator<int> >::~_Vector_base()':	avr-libstdcpp-Test_001		1
Error C:\Users\Worker\AppData\Local\Temp\ccYoUbRD.ltrans0.ltrans.o: in function `_GLOBAL__sub_I_v1':	avr-libstdcpp-Test_001		1
Error ld returned 1 exit status	avr-libstdcpp-Test_001	collect2.exe	0
Error undefined reference to `operator delete(void*, unsigned int)'	avr-libstdcpp-Test_001	<artificial>	1

Translated with www.DeepL.com/Translator (free version)

error: template argument 1 is invalid

This library fails to compile with GCC 7.1.0.

The compilation error is included below (very long).

Compilation error
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/include/map:60,
                 from src/main.cpp:4:
avr-libstdcpp/include/type_traits:901:63: error: template argument 1 is invalid
     : public __bool_constant<__is_constructible(_Tp, _Args...)>
                                                               ^
avr-libstdcpp/include/type_traits:1004:21: error: template argument 1 is invalid
        _Tp, _Args...>;
                     ^
avr-libstdcpp/include/type_traits:1009:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, _Args...>::type
                                             ^
avr-libstdcpp/include/type_traits:1009:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1018:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp>::type
                                             ^
avr-libstdcpp/include/type_traits:1018:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1034:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, const _Tp&>
                                             ^
avr-libstdcpp/include/type_traits:1034:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1055:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, _Tp&&>
                                             ^
avr-libstdcpp/include/type_traits:1055:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1070:55: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp, _Up)>
                                                       ^
avr-libstdcpp/include/type_traits:1085:63: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp&, const _Tp&)>
                                                               ^
avr-libstdcpp/include/type_traits:1106:58: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp&, _Tp&&)>
                                                          ^
avr-libstdcpp/include/type_traits:1125:62: error: template argument 1 is invalid
     : public __and_<__bool_constant<__is_assignable(_Tp, _Up)>,
                                                              ^
avr-libstdcpp/include/type_traits:1126:39: error: template argument 1 is invalid
       __is_nt_assignable_impl<_Tp, _Up>>
                                       ^~
Compiling .pio/build/uno/lib068/avr-libstdcpp/list.cc.o
In file included from avr-libstdcpp/src/hash_bytes.cc:36:0:
avr-libstdcpp/include/type_traits:901:63: error: template argument 1 is invalid
     : public __bool_constant<__is_constructible(_Tp, _Args...)>
                                                               ^
avr-libstdcpp/include/type_traits:1004:21: error: template argument 1 is invalid
        _Tp, _Args...>;
                     ^
avr-libstdcpp/include/type_traits:1009:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, _Args...>::type
                                             ^
avr-libstdcpp/include/type_traits:1009:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1018:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp>::type
                                             ^
avr-libstdcpp/include/type_traits:1018:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1034:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, const _Tp&>
                                             ^
avr-libstdcpp/include/type_traits:1034:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1055:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, _Tp&&>
                                             ^
avr-libstdcpp/include/type_traits:1055:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1070:55: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp, _Up)>
                                                       ^
avr-libstdcpp/include/type_traits:1085:63: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp&, const _Tp&)>
                                                               ^
avr-libstdcpp/include/type_traits:1106:58: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp&, _Tp&&)>
                                                          ^
avr-libstdcpp/include/type_traits:1125:62: error: template argument 1 is invalid
     : public __and_<__bool_constant<__is_assignable(_Tp, _Up)>,
                                                              ^
avr-libstdcpp/include/type_traits:1126:39: error: template argument 1 is invalid
       __is_nt_assignable_impl<_Tp, _Up>>
                                       ^~
Compiling .pio/build/uno/lib068/avr-libstdcpp/math.cc.o
Compiling .pio/build/uno/lib068/avr-libstdcpp/new_handler.cc.o
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/utility:70,
                 from avr-libstdcpp/include/tuple:38,
                 from avr-libstdcpp/src/hashtable_c++0x.cc:30:
avr-libstdcpp/include/type_traits:901:63: error: template argument 1 is invalid
     : public __bool_constant<__is_constructible(_Tp, _Args...)>
                                                               ^
Compiling .pio/build/uno/lib068/avr-libstdcpp/tree.cc.o
avr-libstdcpp/include/type_traits:1004:21: error: template argument 1 is invalid
        _Tp, _Args...>;
                     ^
avr-libstdcpp/include/type_traits:1009:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, _Args...>::type
                                             ^
avr-libstdcpp/include/type_traits:1009:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1018:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp>::type
                                             ^
avr-libstdcpp/include/type_traits:1018:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1034:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, const _Tp&>
                                             ^
avr-libstdcpp/include/type_traits:1034:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1055:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, _Tp&&>
                                             ^
avr-libstdcpp/include/type_traits:1055:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1070:55: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp, _Up)>
                                                       ^
avr-libstdcpp/include/type_traits:1085:63: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp&, const _Tp&)>
                                                               ^
avr-libstdcpp/include/type_traits:1106:58: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp&, _Tp&&)>
                                                          ^
avr-libstdcpp/include/type_traits:1125:62: error: template argument 1 is invalid
     : public __and_<__bool_constant<__is_assignable(_Tp, _Up)>,
                                                              ^
avr-libstdcpp/include/type_traits:1126:39: error: template argument 1 is invalid
       __is_nt_assignable_impl<_Tp, _Up>>
                                       ^~
*** [.pio/build/uno/lib068/avr-libstdcpp/hash_bytes.cc.o] Error 1
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/list:60,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/type_traits:901:63: error: template argument 1 is invalid
     : public __bool_constant<__is_constructible(_Tp, _Args...)>
                                                               ^
avr-libstdcpp/include/type_traits:1004:21: error: template argument 1 is invalid
        _Tp, _Args...>;
                     ^
avr-libstdcpp/include/type_traits:1009:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, _Args...>::type
                                             ^
avr-libstdcpp/include/type_traits:1009:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1018:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp>::type
                                             ^
avr-libstdcpp/include/type_traits:1018:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1034:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, const _Tp&>
                                             ^
avr-libstdcpp/include/type_traits:1034:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1055:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, _Tp&&>
                                             ^
avr-libstdcpp/include/type_traits:1055:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1070:55: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp, _Up)>
                                                       ^
avr-libstdcpp/include/type_traits:1085:63: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp&, const _Tp&)>
                                                               ^
avr-libstdcpp/include/type_traits:1106:58: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp&, _Tp&&)>
                                                          ^
avr-libstdcpp/include/type_traits:1125:62: error: template argument 1 is invalid
     : public __and_<__bool_constant<__is_assignable(_Tp, _Up)>,
                                                              ^
avr-libstdcpp/include/type_traits:1126:39: error: template argument 1 is invalid
       __is_nt_assignable_impl<_Tp, _Up>>
                                       ^~
In file included from avr-libstdcpp/include/optional:36:0,
                 from avr-libstdcpp/include/bits/node_handle.h:39,
                 from avr-libstdcpp/include/bits/stl_tree.h:72,
                 from avr-libstdcpp/include/map:60,
                 from src/main.cpp:4:
avr-libstdcpp/include/utility:316:55: error: expansion pattern '__integer_pack(_Num)' contains no argument packs
       using __type = _Index_tuple<__integer_pack(_Num)...>;
                                                       ^~~
avr-libstdcpp/include/utility:316:58: error: template argument 1 is invalid
       using __type = _Index_tuple<__integer_pack(_Num)...>;
                                                          ^
avr-libstdcpp/include/utility:338:51: error: expansion pattern '__integer_pack(_Num)' contains no argument packs
       = integer_sequence<_Tp, __integer_pack(_Num)...>;
                                                   ^~~
avr-libstdcpp/include/utility:338:54: error: template argument 2 is invalid
       = integer_sequence<_Tp, __integer_pack(_Num)...>;
                                                      ^
In file included from avr-libstdcpp/include/tuple:38:0,
                 from avr-libstdcpp/src/hashtable_c++0x.cc:30:
avr-libstdcpp/include/utility:316:55: error: expansion pattern '__integer_pack(_Num)' contains no argument packs
       using __type = _Index_tuple<__integer_pack(_Num)...>;
                                                       ^~~
avr-libstdcpp/include/utility:316:58: error: template argument 1 is invalid
       using __type = _Index_tuple<__integer_pack(_Num)...>;
                                                          ^
avr-libstdcpp/include/utility:338:51: error: expansion pattern '__integer_pack(_Num)' contains no argument packs
       = integer_sequence<_Tp, __integer_pack(_Num)...>;
                                                   ^~~
avr-libstdcpp/include/utility:338:54: error: template argument 2 is invalid
       = integer_sequence<_Tp, __integer_pack(_Num)...>;
                                                      ^
avr-libstdcpp/include/utility:349:33: error: 'make_integer_sequence' does not name a type; did you mean 'integer_sequence'?
     using make_index_sequence = make_integer_sequence<size_t, _Num>;
                                 ^~~~~~~~~~~~~~~~~~~~~
                                 integer_sequence
avr-libstdcpp/include/utility:349:33: error: 'make_integer_sequence' does not name a type; did you mean 'integer_sequence'?
     using make_index_sequence = make_integer_sequence<size_t, _Num>;
                                 ^~~~~~~~~~~~~~~~~~~~~
                                 integer_sequence
avr-libstdcpp/include/utility:353:32: error: 'make_index_sequence' does not name a type; did you mean 'index_sequence'?
     using index_sequence_for = make_index_sequence<sizeof...(_Types)>;
                                ^~~~~~~~~~~~~~~~~~~
                                index_sequence
avr-libstdcpp/include/utility:353:32: error: 'make_index_sequence' does not name a type; did you mean 'index_sequence'?
     using index_sequence_for = make_index_sequence<sizeof...(_Types)>;
                                ^~~~~~~~~~~~~~~~~~~
                                index_sequence
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/src/tree.cc:53:
avr-libstdcpp/include/type_traits:901:63: error: template argument 1 is invalid
     : public __bool_constant<__is_constructible(_Tp, _Args...)>
                                                               ^
avr-libstdcpp/include/type_traits:1004:21: error: template argument 1 is invalid
        _Tp, _Args...>;
                     ^
avr-libstdcpp/include/type_traits:1009:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, _Args...>::type
                                             ^
avr-libstdcpp/include/type_traits:1009:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1018:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp>::type
                                             ^
avr-libstdcpp/include/type_traits:1018:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1034:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, const _Tp&>
                                             ^
avr-libstdcpp/include/type_traits:1034:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1055:45: error: expected template-name before '<' token
     : public __is_nothrow_constructible_impl<_Tp, _Tp&&>
                                             ^
avr-libstdcpp/include/type_traits:1055:45: error: expected '{' before '<' token
avr-libstdcpp/include/type_traits:1070:55: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp, _Up)>
                                                       ^
avr-libstdcpp/include/type_traits:1085:63: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp&, const _Tp&)>
                                                               ^
avr-libstdcpp/include/type_traits:1106:58: error: template argument 1 is invalid
     : public __bool_constant<__is_assignable(_Tp&, _Tp&&)>
                                                          ^
avr-libstdcpp/include/type_traits:1125:62: error: template argument 1 is invalid
     : public __and_<__bool_constant<__is_assignable(_Tp, _Up)>,
                                                              ^
avr-libstdcpp/include/type_traits:1126:39: error: template argument 1 is invalid
       __is_nt_assignable_impl<_Tp, _Up>>
                                       ^~
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/include/map:60,
                 from src/main.cpp:4:
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::is_copy_assignable<std::_Rb_tree_node_base*>':
avr-libstdcpp/include/type_traits:138:12:   required from 'struct std::__and_<std::is_copy_assignable<std::_Rb_tree_node_base*>, std::is_copy_assignable<std::_Rb_tree_node_base*> >'
avr-libstdcpp/include/bits/stl_pair.h:390:7:   required from 'struct std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*>'
avr-libstdcpp/include/bits/stl_tree.h:2092:49:   required from here
avr-libstdcpp/include/type_traits:1090:12: error: no type named 'type' in 'struct std::__is_copy_assignable_impl<std::_Rb_tree_node_base*, true>'
     struct is_copy_assignable
            ^~~~~~~~~~~~~~~~~~
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::__and_<std::is_copy_assignable<std::_Rb_tree_node_base*>, std::is_copy_assignable<std::_Rb_tree_node_base*> >':
avr-libstdcpp/include/bits/stl_pair.h:390:7:   required from 'struct std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*>'
avr-libstdcpp/include/bits/stl_tree.h:2092:49:   required from here
avr-libstdcpp/include/type_traits:138:12: error: 'value' is not a member of 'std::is_copy_assignable<std::_Rb_tree_node_base*>'
     struct __and_<_B1, _B2>
            ^~~~~~~~~~~~~~~~
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/include/map:60,
                 from src/main.cpp:4:
avr-libstdcpp/include/bits/stl_pair.h: In instantiation of 'struct std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*>':
avr-libstdcpp/include/bits/stl_tree.h:2092:49:   required from here
avr-libstdcpp/include/bits/stl_pair.h:390:7: error: 'value' is not a member of 'std::__and_<std::is_copy_assignable<std::_Rb_tree_node_base*>, std::is_copy_assignable<std::_Rb_tree_node_base*> >'
       operator=(typename conditional<
       ^~~~~~~~
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/include/map:60,
                 from src/main.cpp:4:
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::is_move_assignable<std::_Rb_tree_node_base*>':
avr-libstdcpp/include/type_traits:138:12:   required from 'struct std::__and_<std::is_move_assignable<std::_Rb_tree_node_base*>, std::is_move_assignable<std::_Rb_tree_node_base*> >'
avr-libstdcpp/include/bits/stl_pair.h:401:7:   required from 'struct std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*>'
avr-libstdcpp/include/bits/stl_tree.h:2092:49:   required from here
avr-libstdcpp/include/type_traits:1111:12: error: no type named 'type' in 'struct std::__is_move_assignable_impl<std::_Rb_tree_node_base*, true>'
     struct is_move_assignable
            ^~~~~~~~~~~~~~~~~~
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::__and_<std::is_move_assignable<std::_Rb_tree_node_base*>, std::is_move_assignable<std::_Rb_tree_node_base*> >':
avr-libstdcpp/include/bits/stl_pair.h:401:7:   required from 'struct std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*>'
avr-libstdcpp/include/bits/stl_tree.h:2092:49:   required from here
avr-libstdcpp/include/type_traits:138:12: error: 'value' is not a member of 'std::is_move_assignable<std::_Rb_tree_node_base*>'
     struct __and_<_B1, _B2>
            ^~~~~~~~~~~~~~~~
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/include/map:60,
                 from src/main.cpp:4:
avr-libstdcpp/include/bits/stl_pair.h: In instantiation of 'struct std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*>':
avr-libstdcpp/include/bits/stl_tree.h:2092:49:   required from here
avr-libstdcpp/include/bits/stl_pair.h:401:7: error: 'value' is not a member of 'std::__and_<std::is_move_assignable<std::_Rb_tree_node_base*>, std::is_move_assignable<std::_Rb_tree_node_base*> >'
       operator=(typename conditional<
       ^~~~~~~~
In file included from avr-libstdcpp/src/hashtable_c++0x.cc:30:0:
avr-libstdcpp/include/tuple: In function 'constexpr decltype(auto) std::apply(_Fn&&, _Tuple&&)':
avr-libstdcpp/include/tuple:1733:4: error: 'make_index_sequence' does not name a type; did you mean 'index_sequence'?
  = make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>;
    ^~~~~~~~~~~~~~~~~~~
    index_sequence
avr-libstdcpp/include/tuple:1736:11: error: '_Indices' was not declared in this scope
           _Indices{});
           ^~~~~~~~
avr-libstdcpp/include/tuple: In function 'constexpr _Tp std::make_from_tuple(_Tuple&&)':
avr-libstdcpp/include/tuple:1753:2: error: 'make_index_sequence' was not declared in this scope
  make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>{});
  ^~~~~~~~~~~~~~~~~~~
avr-libstdcpp/include/tuple:1753:2: note: suggested alternative: 'index_sequence'
  make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>{});
  ^~~~~~~~~~~~~~~~~~~
  index_sequence
avr-libstdcpp/include/tuple:1753:63: error: expected primary-expression before '{' token
  make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>{});
                                                               ^
avr-libstdcpp/include/tuple:1753:63: error: expected ')' before '{' token
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::__and_<std::is_move_constructible<std::__detail::_List_node_base*>, std::is_move_assignable<std::__detail::_List_node_base*> >':
avr-libstdcpp/include/type_traits:143:12:   required from 'struct std::__and_<std::__not_<std::__is_tuple_like<std::__detail::_List_node_base*> >, std::is_move_constructible<std::__detail::_List_node_base*>, std::is_move_assignable<std::__detail::_List_node_base*> >'
avr-libstdcpp/include/type_traits:2195:60:   required by substitution of 'template<class ... _Cond> using _Require = std::__enable_if_t<std::__and_< <template-parameter-1-1> >::value> [with _Cond = {std::__not_<std::__is_tuple_like<std::__detail::_List_node_base*> >, std::is_move_constructible<std::__detail::_List_node_base*>, std::is_move_assignable<std::__detail::_List_node_base*>}]'
avr-libstdcpp/include/bits/move.h:189:5:   required by substitution of 'template<class _Tp> std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&) [with _Tp = std::__detail::_List_node_base*]'
avr-libstdcpp/src/list.cc:68:41:   required from here
avr-libstdcpp/include/type_traits:138:12: error: 'value' is not a member of 'std::is_move_constructible<std::__detail::_List_node_base*>'
     struct __and_<_B1, _B2>
            ^~~~~~~~~~~~~~~~
avr-libstdcpp/src/list.cc: In static member function 'static void std::__detail::_List_node_base::swap(std::__detail::_List_node_base&, std::__detail::_List_node_base&)':
avr-libstdcpp/src/list.cc:68:41: error: no matching function for call to 'swap(std::__detail::_List_node_base*&, std::__detail::_List_node_base*&)'
        std::swap(__x._M_next,__y._M_next);
                                         ^
In file included from avr-libstdcpp/include/bits/stl_pair.h:59:0,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/list:60,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/bits/move.h:189:5: note: candidate: template<class _Tp> std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&)
     swap(_Tp& __a, _Tp& __b)
     ^~~~
avr-libstdcpp/include/bits/move.h:189:5: note:   substitution of deduced template arguments resulted in errors seen above
avr-libstdcpp/include/bits/move.h:213:5: note: candidate: template<class _Tp, unsigned int _Nm> std::__enable_if_t<std::__is_swappable<_Tp>::value> std::swap(_Tp (&)[_Nm], _Tp (&)[_Nm])
     swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
     ^~~~
avr-libstdcpp/include/bits/move.h:213:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/list.cc:68:41: note:   mismatched types '_Tp [_Nm]' and 'std::__detail::_List_node_base*'
        std::swap(__x._M_next,__y._M_next);
                                         ^
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/list:60,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/bits/stl_pair.h:533:5: note: candidate: template<class _T1, class _T2> typename std::enable_if<std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value>::type std::swap(std::pair<_T1, _T2>&, std::pair<_T1, _T2>&)
     swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
     ^~~~
avr-libstdcpp/include/bits/stl_pair.h:533:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/list.cc:68:41: note:   mismatched types 'std::pair<_T1, _T2>' and 'std::__detail::_List_node_base*'
        std::swap(__x._M_next,__y._M_next);
                                         ^
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/list:60,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/bits/stl_pair.h:541:5: note: candidate: template<class _T1, class _T2> typename std::enable_if<(! std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value)>::type std::swap(std::pair<_T1, _T2>&, std::pair<_T1, _T2>&) <deleted>
     swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete;
     ^~~~
avr-libstdcpp/include/bits/stl_pair.h:541:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/list.cc:68:41: note:   mismatched types 'std::pair<_T1, _T2>' and 'std::__detail::_List_node_base*'
        std::swap(__x._M_next,__y._M_next);
                                         ^
In file included from avr-libstdcpp/include/list:63:0,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/bits/stl_list.h:2082:5: note: candidate: template<class _Tp, class _Alloc> void std::swap(std::__cxx11::list<_Tp, _Alloc>&, std::__cxx11::list<_Tp, _Alloc>&)
     swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y)
     ^~~~
avr-libstdcpp/include/bits/stl_list.h:2082:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/list.cc:68:41: note:   mismatched types 'std::__cxx11::list<_Tp, _Alloc>' and 'std::__detail::_List_node_base*'
        std::swap(__x._M_next,__y._M_next);
                                         ^
avr-libstdcpp/src/list.cc:69:41: error: no matching function for call to 'swap(std::__detail::_List_node_base*&, std::__detail::_List_node_base*&)'
        std::swap(__x._M_prev,__y._M_prev);
                                         ^
In file included from avr-libstdcpp/include/bits/stl_pair.h:59:0,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/list:60,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/bits/move.h:189:5: note: candidate: template<class _Tp> std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&)
     swap(_Tp& __a, _Tp& __b)
     ^~~~
avr-libstdcpp/include/bits/move.h:189:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/include/bits/move.h:213:5: note: candidate: template<class _Tp, unsigned int _Nm> std::__enable_if_t<std::__is_swappable<_Tp>::value> std::swap(_Tp (&)[_Nm], _Tp (&)[_Nm])
     swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
     ^~~~
avr-libstdcpp/include/bits/move.h:213:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/list.cc:69:41: note:   mismatched types '_Tp [_Nm]' and 'std::__detail::_List_node_base*'
        std::swap(__x._M_prev,__y._M_prev);
                                         ^
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/list:60,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/bits/stl_pair.h:533:5: note: candidate: template<class _T1, class _T2> typename std::enable_if<std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value>::type std::swap(std::pair<_T1, _T2>&, std::pair<_T1, _T2>&)
     swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
     ^~~~
avr-libstdcpp/include/bits/stl_pair.h:533:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/list.cc:69:41: note:   mismatched types 'std::pair<_T1, _T2>' and 'std::__detail::_List_node_base*'
        std::swap(__x._M_prev,__y._M_prev);
                                         ^
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/list:60,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/bits/stl_pair.h:541:5: note: candidate: template<class _T1, class _T2> typename std::enable_if<(! std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value)>::type std::swap(std::pair<_T1, _T2>&, std::pair<_T1, _T2>&) <deleted>
     swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete;
     ^~~~
avr-libstdcpp/include/bits/stl_pair.h:541:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/list.cc:69:41: note:   mismatched types 'std::pair<_T1, _T2>' and 'std::__detail::_List_node_base*'
        std::swap(__x._M_prev,__y._M_prev);
                                         ^
In file included from avr-libstdcpp/include/list:63:0,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/bits/stl_list.h:2082:5: note: candidate: template<class _Tp, class _Alloc> void std::swap(std::__cxx11::list<_Tp, _Alloc>&, std::__cxx11::list<_Tp, _Alloc>&)
     swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y)
     ^~~~
avr-libstdcpp/include/bits/stl_list.h:2082:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/list.cc:69:41: note:   mismatched types 'std::__cxx11::list<_Tp, _Alloc>' and 'std::__detail::_List_node_base*'
        std::swap(__x._M_prev,__y._M_prev);
                                         ^
avr-libstdcpp/src/list.cc: In member function 'void std::__detail::_List_node_base::_M_reverse()':
avr-libstdcpp/src/list.cc:118:44: error: no matching function for call to 'swap(std::__detail::_List_node_base*&, std::__detail::_List_node_base*&)'
    std::swap(__tmp->_M_next, __tmp->_M_prev);
                                            ^
In file included from avr-libstdcpp/include/bits/stl_pair.h:59:0,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/list:60,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/bits/move.h:189:5: note: candidate: template<class _Tp> std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&)
     swap(_Tp& __a, _Tp& __b)
     ^~~~
avr-libstdcpp/include/bits/move.h:189:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/include/bits/move.h:213:5: note: candidate: template<class _Tp, unsigned int _Nm> std::__enable_if_t<std::__is_swappable<_Tp>::value> std::swap(_Tp (&)[_Nm], _Tp (&)[_Nm])
     swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
     ^~~~
avr-libstdcpp/include/bits/move.h:213:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/list.cc:118:44: note:   mismatched types '_Tp [_Nm]' and 'std::__detail::_List_node_base*'
    std::swap(__tmp->_M_next, __tmp->_M_prev);
                                            ^
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/list:60,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/bits/stl_pair.h:533:5: note: candidate: template<class _T1, class _T2> typename std::enable_if<std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value>::type std::swap(std::pair<_T1, _T2>&, std::pair<_T1, _T2>&)
     swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
     ^~~~
avr-libstdcpp/include/bits/stl_pair.h:533:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/list.cc:118:44: note:   mismatched types 'std::pair<_T1, _T2>' and 'std::__detail::_List_node_base*'
    std::swap(__tmp->_M_next, __tmp->_M_prev);
                                            ^
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/list:60,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/bits/stl_pair.h:541:5: note: candidate: template<class _T1, class _T2> typename std::enable_if<(! std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value)>::type std::swap(std::pair<_T1, _T2>&, std::pair<_T1, _T2>&) <deleted>
     swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete;
     ^~~~
avr-libstdcpp/include/bits/stl_pair.h:541:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/list.cc:118:44: note:   mismatched types 'std::pair<_T1, _T2>' and 'std::__detail::_List_node_base*'
    std::swap(__tmp->_M_next, __tmp->_M_prev);
                                            ^
In file included from avr-libstdcpp/include/list:63:0,
                 from avr-libstdcpp/src/list.cc:51:
avr-libstdcpp/include/bits/stl_list.h:2082:5: note: candidate: template<class _Tp, class _Alloc> void std::swap(std::__cxx11::list<_Tp, _Alloc>&, std::__cxx11::list<_Tp, _Alloc>&)
     swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y)
     ^~~~
avr-libstdcpp/include/bits/stl_list.h:2082:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/list.cc:118:44: note:   mismatched types 'std::__cxx11::list<_Tp, _Alloc>' and 'std::__detail::_List_node_base*'
    std::swap(__tmp->_M_next, __tmp->_M_prev);
                                            ^
*** [.pio/build/uno/lib068/avr-libstdcpp/list.cc.o] Error 1
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/utility:70,
                 from avr-libstdcpp/include/tuple:38,
                 from avr-libstdcpp/src/hashtable_c++0x.cc:30:
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::is_copy_assignable<bool>':
avr-libstdcpp/include/type_traits:138:12:   required from 'struct std::__and_<std::is_copy_assignable<bool>, std::is_copy_assignable<unsigned int> >'
avr-libstdcpp/include/bits/stl_pair.h:390:7:   required from 'struct std::pair<bool, unsigned int>'
avr-libstdcpp/include/bits/hashtable_policy.h:580:5:   required from here
avr-libstdcpp/include/type_traits:1090:12: error: no type named 'type' in 'struct std::__is_copy_assignable_impl<bool, true>'
     struct is_copy_assignable
            ^~~~~~~~~~~~~~~~~~
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::__and_<std::is_copy_assignable<bool>, std::is_copy_assignable<unsigned int> >':
avr-libstdcpp/include/bits/stl_pair.h:390:7:   required from 'struct std::pair<bool, unsigned int>'
avr-libstdcpp/include/bits/hashtable_policy.h:580:5:   required from here
avr-libstdcpp/include/type_traits:138:12: error: 'value' is not a member of 'std::is_copy_assignable<bool>'
     struct __and_<_B1, _B2>
            ^~~~~~~~~~~~~~~~
In file included from avr-libstdcpp/include/utility:70:0,
                 from avr-libstdcpp/include/tuple:38,
                 from avr-libstdcpp/src/hashtable_c++0x.cc:30:
avr-libstdcpp/include/bits/stl_pair.h: In instantiation of 'struct std::pair<bool, unsigned int>':
avr-libstdcpp/include/bits/hashtable_policy.h:580:5:   required from here
avr-libstdcpp/include/bits/stl_pair.h:390:7: error: 'value' is not a member of 'std::__and_<std::is_copy_assignable<bool>, std::is_copy_assignable<unsigned int> >'
       operator=(typename conditional<
       ^~~~~~~~
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/utility:70,
                 from avr-libstdcpp/include/tuple:38,
                 from avr-libstdcpp/src/hashtable_c++0x.cc:30:
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::is_move_assignable<bool>':
avr-libstdcpp/include/type_traits:138:12:   required from 'struct std::__and_<std::is_move_assignable<bool>, std::is_move_assignable<unsigned int> >'
avr-libstdcpp/include/bits/stl_pair.h:401:7:   required from 'struct std::pair<bool, unsigned int>'
avr-libstdcpp/include/bits/hashtable_policy.h:580:5:   required from here
avr-libstdcpp/include/type_traits:1111:12: error: no type named 'type' in 'struct std::__is_move_assignable_impl<bool, true>'
     struct is_move_assignable
            ^~~~~~~~~~~~~~~~~~
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::__and_<std::is_move_assignable<bool>, std::is_move_assignable<unsigned int> >':
avr-libstdcpp/include/bits/stl_pair.h:401:7:   required from 'struct std::pair<bool, unsigned int>'
avr-libstdcpp/include/bits/hashtable_policy.h:580:5:   required from here
avr-libstdcpp/include/type_traits:138:12: error: 'value' is not a member of 'std::is_move_assignable<bool>'
     struct __and_<_B1, _B2>
            ^~~~~~~~~~~~~~~~
In file included from avr-libstdcpp/include/utility:70:0,
                 from avr-libstdcpp/include/tuple:38,
                 from avr-libstdcpp/src/hashtable_c++0x.cc:30:
avr-libstdcpp/include/bits/stl_pair.h: In instantiation of 'struct std::pair<bool, unsigned int>':
avr-libstdcpp/include/bits/hashtable_policy.h:580:5:   required from here
avr-libstdcpp/include/bits/stl_pair.h:401:7: error: 'value' is not a member of 'std::__and_<std::is_move_assignable<bool>, std::is_move_assignable<unsigned int> >'
       operator=(typename conditional<
       ^~~~~~~~
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/utility:70,
                 from avr-libstdcpp/include/tuple:38,
                 from avr-libstdcpp/src/hashtable_c++0x.cc:30:
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::__and_<std::is_constructible<bool, const bool&>, std::is_constructible<unsigned int, const unsigned int&> >':
avr-libstdcpp/include/bits/stl_pair.h:107:45:   required from 'static constexpr bool std::_PCC<<anonymous>, _T1, _T2>::_ConstructiblePair() [with _U1 = bool; _U2 = unsigned int; bool <anonymous> = true; _T1 = bool; _T2 = unsigned int]'
avr-libstdcpp/include/bits/stl_pair.h:262:35:   required by substitution of 'template<class _U1, class _U2, typename std::enable_if<(_ConstructiblePair<_U1, _U2>() && _ImplicitlyConvertiblePair<_U1, _U2>()), bool>::type <anonymous> > constexpr std::pair<bool, unsigned int>::pair(const bool&, const unsigned int&) [with _U1 = bool; _U2 = unsigned int; typename std::enable_if<(_ConstructiblePair<_U1, _U2>() && _ImplicitlyConvertiblePair<_U1, _U2>()), bool>::type <anonymous> = <missing>]'
avr-libstdcpp/include/bits/hashtable_policy.h:592:36:   required from here
avr-libstdcpp/include/type_traits:138:12: error: 'value' is not a member of 'std::is_constructible<bool, const bool&>'
     struct __and_<_B1, _B2>
            ^~~~~~~~~~~~~~~~

   ... Truncated ~40k characters to fit GitHub comment character limit ...         
            
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/include/map:60,
                 from src/main.cpp:4:
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::__and_<std::is_constructible<const char, const char&>, std::is_constructible<unsigned char, int&&>, std::__and_<std::is_convertible<const char&, const char>, std::is_convertible<int&&, unsigned char> > >':
avr-libstdcpp/include/bits/stl_pair.h:142:12:   required from 'static constexpr bool std::_PCC<<anonymous>, _T1, _T2>::_CopyMovePair() [with bool __implicit = true; _U1 = const char; _U2 = int; bool <anonymous> = true; _T1 = const char; _T2 = unsigned char]'
avr-libstdcpp/include/bits/stl_pair.h:334:36:   required by substitution of 'template<class _U2, typename std::enable_if<_CopyMovePair<true, const char, _U2>(), bool>::type <anonymous> > constexpr std::pair<const char, unsigned char>::pair(const char&, _U2&&) [with _U2 = int; typename std::enable_if<_CopyMovePair<true, const char, _U2>(), bool>::type <anonymous> = <missing>]'
src/main.cpp:31:1:   required from here
avr-libstdcpp/include/type_traits:143:12: error: 'value' is not a member of 'std::is_constructible<const char, const char&>'
     struct __and_<_B1, _B2, _B3, _Bn...>
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/include/map:60,
                 from src/main.cpp:4:
avr-libstdcpp/include/bits/stl_pair.h: In instantiation of 'static constexpr bool std::_PCC<<anonymous>, _T1, _T2>::_CopyMovePair() [with bool __implicit = true; _U1 = const char; _U2 = int; bool <anonymous> = true; _T1 = const char; _T2 = unsigned char]':
avr-libstdcpp/include/bits/stl_pair.h:334:36:   required by substitution of 'template<class _U2, typename std::enable_if<_CopyMovePair<true, const char, _U2>(), bool>::type <anonymous> > constexpr std::pair<const char, unsigned char>::pair(const char&, _U2&&) [with _U2 = int; typename std::enable_if<_CopyMovePair<true, const char, _U2>(), bool>::type <anonymous> = <missing>]'
src/main.cpp:31:1:   required from here
avr-libstdcpp/include/bits/stl_pair.h:142:12: error: 'value' is not a member of 'std::__and_<std::is_constructible<const char, const char&>, std::is_constructible<unsigned char, int&&>, std::__and_<std::is_convertible<const char&, const char>, std::is_convertible<int&&, unsigned char> > >'
         >::value;
            ^~~~~
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/include/map:60,
                 from src/main.cpp:4:
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::__and_<std::is_constructible<const char, const char&>, std::is_constructible<unsigned char, int&&>, std::__not_<std::__and_<std::is_convertible<const char&, const char>, std::is_convertible<int&&, unsigned char> > > >':
avr-libstdcpp/include/bits/stl_pair.h:142:12:   required from 'static constexpr bool std::_PCC<<anonymous>, _T1, _T2>::_CopyMovePair() [with bool __implicit = false; _U1 = const char; _U2 = int; bool <anonymous> = true; _T1 = const char; _T2 = unsigned char]'
avr-libstdcpp/include/bits/stl_pair.h:341:37:   required by substitution of 'template<class _U2, typename std::enable_if<_CopyMovePair<false, const char, _U2>(), bool>::type <anonymous> > std::pair<const char, unsigned char>::pair(const char&, _U2&&) [with _U2 = int; typename std::enable_if<_CopyMovePair<false, const char, _U2>(), bool>::type <anonymous> = <missing>]'
src/main.cpp:31:1:   required from here
avr-libstdcpp/include/type_traits:143:12: error: 'value' is not a member of 'std::is_constructible<const char, const char&>'
     struct __and_<_B1, _B2, _B3, _Bn...>
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/include/map:60,
                 from src/main.cpp:4:
avr-libstdcpp/include/bits/stl_pair.h: In instantiation of 'static constexpr bool std::_PCC<<anonymous>, _T1, _T2>::_CopyMovePair() [with bool __implicit = false; _U1 = const char; _U2 = int; bool <anonymous> = true; _T1 = const char; _T2 = unsigned char]':
avr-libstdcpp/include/bits/stl_pair.h:341:37:   required by substitution of 'template<class _U2, typename std::enable_if<_CopyMovePair<false, const char, _U2>(), bool>::type <anonymous> > std::pair<const char, unsigned char>::pair(const char&, _U2&&) [with _U2 = int; typename std::enable_if<_CopyMovePair<false, const char, _U2>(), bool>::type <anonymous> = <missing>]'
src/main.cpp:31:1:   required from here
avr-libstdcpp/include/bits/stl_pair.h:142:12: error: 'value' is not a member of 'std::__and_<std::is_constructible<const char, const char&>, std::is_constructible<unsigned char, int&&>, std::__not_<std::__and_<std::is_convertible<const char&, const char>, std::is_convertible<int&&, unsigned char> > > >'
         >::value;
            ^~~~~
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/include/map:60,
                 from src/main.cpp:4:
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::__and_<std::is_constructible<const char, char&&>, std::is_constructible<unsigned char, int&&> >':
avr-libstdcpp/include/bits/stl_pair.h:121:40:   required from 'static constexpr bool std::_PCC<<anonymous>, _T1, _T2>::_MoveConstructiblePair() [with _U1 = char; _U2 = int; bool <anonymous> = true; _T1 = const char; _T2 = unsigned char]'
avr-libstdcpp/include/bits/stl_pair.h:348:39:   required by substitution of 'template<class _U1, class _U2, typename std::enable_if<(_MoveConstructiblePair<_U1, _U2>() && _ImplicitlyMoveConvertiblePair<_U1, _U2>()), bool>::type <anonymous> > constexpr std::pair<const char, unsigned char>::pair(_U1&&, _U2&&) [with _U1 = char; _U2 = int; typename std::enable_if<(_MoveConstructiblePair<_U1, _U2>() && _ImplicitlyMoveConvertiblePair<_U1, _U2>()), bool>::type <anonymous> = <missing>]'
src/main.cpp:31:1:   required from here
avr-libstdcpp/include/type_traits:138:12: error: 'value' is not a member of 'std::is_constructible<const char, char&&>'
     struct __and_<_B1, _B2>
            ^~~~~~~~~~~~~~~~
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/include/map:60,
                 from src/main.cpp:4:
avr-libstdcpp/include/bits/stl_pair.h: In instantiation of 'static constexpr bool std::_PCC<<anonymous>, _T1, _T2>::_MoveConstructiblePair() [with _U1 = char; _U2 = int; bool <anonymous> = true; _T1 = const char; _T2 = unsigned char]':
avr-libstdcpp/include/bits/stl_pair.h:348:39:   required by substitution of 'template<class _U1, class _U2, typename std::enable_if<(_MoveConstructiblePair<_U1, _U2>() && _ImplicitlyMoveConvertiblePair<_U1, _U2>()), bool>::type <anonymous> > constexpr std::pair<const char, unsigned char>::pair(_U1&&, _U2&&) [with _U1 = char; _U2 = int; typename std::enable_if<(_MoveConstructiblePair<_U1, _U2>() && _ImplicitlyMoveConvertiblePair<_U1, _U2>()), bool>::type <anonymous> = <missing>]'
src/main.cpp:31:1:   required from here
avr-libstdcpp/include/bits/stl_pair.h:121:40: error: 'value' is not a member of 'std::__and_<std::is_constructible<const char, char&&>, std::is_constructible<unsigned char, int&&> >'
         is_constructible<_T2, _U2&&>>::value;
                                        ^~~~~
src/main.cpp: At global scope:
src/main.cpp:31:1: error: could not convert '{{'A', 238}, {'B', 254}, {'C', 156}, {'D', 248}, {'E', 158}, {'F', 142}, {'G', 188}, {'H', 110}, {'I', 12}, {'J', 112}, {'K', 174}, {'L', 28}, {'M', 212}, {'N', 236}, {'O', 252}, {'P', 206}, {'Q', 214}, {'R', 222}, {'S', 182}, {'T', 140}, {'U', 124}, {'V', 116}, {'W', 184}, {'X', 146}, {'Y', 86}, {'Z', 218}, {'a', 50}, {'b', 62}, {'c', 26}, {'d', 122}, {'e', 24}, {'f', 14}, {'g', 154}, {'h', 46}, {'i', 152}, {'j', 176}, {'k', 150}, {'l', 12}, {'m', 170}, {'n', 42}, {'o', 58}, {'p', 206}, {'q', 230}, {'r', 10}, {'s', 48}, {'t', 30}, {'u', 56}, {'v', 48}, {'w', 84}, {'x', 18}, {'y', 118}, {'z', 18}, {'0', 252}, {'1', 96}, {'2', 218}, {'3', 242}, {'4', 102}, {'5', 182}, {'6', 190}, {'7', 228}, {'8', 254}, {'9', 246}, {' ', 0}, {'.', 1}, {'\"', 68}, {'\'', 4}, {'=', 130}, {'-', 2}, {'_', 16}, {':', 144}}' from '<brace-enclosed initializer list>' to 'const std::map<const char, unsigned char>'
 };
 ^
*** [.pio/build/uno/src/main.cpp.o] Error 1
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/src/tree.cc:53:
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::is_copy_assignable<std::_Rb_tree_node_base*>':
avr-libstdcpp/include/type_traits:138:12:   required from 'struct std::__and_<std::is_copy_assignable<std::_Rb_tree_node_base*>, std::is_copy_assignable<std::_Rb_tree_node_base*> >'
avr-libstdcpp/include/bits/stl_pair.h:390:7:   required from 'struct std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*>'
avr-libstdcpp/include/bits/stl_tree.h:2092:49:   required from here
avr-libstdcpp/include/type_traits:1090:12: error: no type named 'type' in 'struct std::__is_copy_assignable_impl<std::_Rb_tree_node_base*, true>'
     struct is_copy_assignable
            ^~~~~~~~~~~~~~~~~~
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::__and_<std::is_copy_assignable<std::_Rb_tree_node_base*>, std::is_copy_assignable<std::_Rb_tree_node_base*> >':
avr-libstdcpp/include/bits/stl_pair.h:390:7:   required from 'struct std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*>'
avr-libstdcpp/include/bits/stl_tree.h:2092:49:   required from here
avr-libstdcpp/include/type_traits:138:12: error: 'value' is not a member of 'std::is_copy_assignable<std::_Rb_tree_node_base*>'
     struct __and_<_B1, _B2>
            ^~~~~~~~~~~~~~~~
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/src/tree.cc:53:
avr-libstdcpp/include/bits/stl_pair.h: In instantiation of 'struct std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*>':
avr-libstdcpp/include/bits/stl_tree.h:2092:49:   required from here
avr-libstdcpp/include/bits/stl_pair.h:390:7: error: 'value' is not a member of 'std::__and_<std::is_copy_assignable<std::_Rb_tree_node_base*>, std::is_copy_assignable<std::_Rb_tree_node_base*> >'
       operator=(typename conditional<
       ^~~~~~~~
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/src/tree.cc:53:
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::is_move_assignable<std::_Rb_tree_node_base*>':
avr-libstdcpp/include/type_traits:138:12:   required from 'struct std::__and_<std::is_move_assignable<std::_Rb_tree_node_base*>, std::is_move_assignable<std::_Rb_tree_node_base*> >'
avr-libstdcpp/include/bits/stl_pair.h:401:7:   required from 'struct std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*>'
avr-libstdcpp/include/bits/stl_tree.h:2092:49:   required from here
avr-libstdcpp/include/type_traits:1111:12: error: no type named 'type' in 'struct std::__is_move_assignable_impl<std::_Rb_tree_node_base*, true>'
     struct is_move_assignable
            ^~~~~~~~~~~~~~~~~~
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::__and_<std::is_move_assignable<std::_Rb_tree_node_base*>, std::is_move_assignable<std::_Rb_tree_node_base*> >':
avr-libstdcpp/include/bits/stl_pair.h:401:7:   required from 'struct std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*>'
avr-libstdcpp/include/bits/stl_tree.h:2092:49:   required from here
avr-libstdcpp/include/type_traits:138:12: error: 'value' is not a member of 'std::is_move_assignable<std::_Rb_tree_node_base*>'
     struct __and_<_B1, _B2>
            ^~~~~~~~~~~~~~~~
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/src/tree.cc:53:
avr-libstdcpp/include/bits/stl_pair.h: In instantiation of 'struct std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*>':
avr-libstdcpp/include/bits/stl_tree.h:2092:49:   required from here
avr-libstdcpp/include/bits/stl_pair.h:401:7: error: 'value' is not a member of 'std::__and_<std::is_move_assignable<std::_Rb_tree_node_base*>, std::is_move_assignable<std::_Rb_tree_node_base*> >'
       operator=(typename conditional<
       ^~~~~~~~
In file included from avr-libstdcpp/include/bits/move.h:57:0,
                 from avr-libstdcpp/include/bits/stl_pair.h:59,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/src/tree.cc:53:
avr-libstdcpp/include/type_traits: In instantiation of 'struct std::__and_<std::is_move_constructible<std::_Rb_tree_color>, std::is_move_assignable<std::_Rb_tree_color> >':
avr-libstdcpp/include/type_traits:143:12:   required from 'struct std::__and_<std::__not_<std::__is_tuple_like<std::_Rb_tree_color> >, std::is_move_constructible<std::_Rb_tree_color>, std::is_move_assignable<std::_Rb_tree_color> >'
avr-libstdcpp/include/type_traits:2195:60:   required by substitution of 'template<class ... _Cond> using _Require = std::__enable_if_t<std::__and_< <template-parameter-1-1> >::value> [with _Cond = {std::__not_<std::__is_tuple_like<std::_Rb_tree_color> >, std::is_move_constructible<std::_Rb_tree_color>, std::is_move_assignable<std::_Rb_tree_color>}]'
avr-libstdcpp/include/bits/move.h:189:5:   required by substitution of 'template<class _Tp> std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&) [with _Tp = std::_Rb_tree_color]'
avr-libstdcpp/src/tree.cc:331:40:   required from here
avr-libstdcpp/include/type_traits:138:12: error: 'value' is not a member of 'std::is_move_constructible<std::_Rb_tree_color>'
     struct __and_<_B1, _B2>
            ^~~~~~~~~~~~~~~~
avr-libstdcpp/src/tree.cc: In function 'std::_Rb_tree_node_base* std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)':
avr-libstdcpp/src/tree.cc:331:40: error: no matching function for call to 'swap(std::_Rb_tree_color&, std::_Rb_tree_color&)'
  std::swap(__y->_M_color, __z->_M_color);
                                        ^
In file included from avr-libstdcpp/include/bits/stl_pair.h:59:0,
                 from avr-libstdcpp/include/bits/stl_algobase.h:64,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/src/tree.cc:53:
avr-libstdcpp/include/bits/move.h:189:5: note: candidate: template<class _Tp> std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&)
     swap(_Tp& __a, _Tp& __b)
     ^~~~
avr-libstdcpp/include/bits/move.h:189:5: note:   substitution of deduced template arguments resulted in errors seen above
avr-libstdcpp/include/bits/move.h:213:5: note: candidate: template<class _Tp, unsigned int _Nm> std::__enable_if_t<std::__is_swappable<_Tp>::value> std::swap(_Tp (&)[_Nm], _Tp (&)[_Nm])
     swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
     ^~~~
avr-libstdcpp/include/bits/move.h:213:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/tree.cc:331:40: note:   mismatched types '_Tp [_Nm]' and 'std::_Rb_tree_color'
  std::swap(__y->_M_color, __z->_M_color);
                                        ^
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/src/tree.cc:53:
avr-libstdcpp/include/bits/stl_pair.h:533:5: note: candidate: template<class _T1, class _T2> typename std::enable_if<std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value>::type std::swap(std::pair<_T1, _T2>&, std::pair<_T1, _T2>&)
     swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
     ^~~~
avr-libstdcpp/include/bits/stl_pair.h:533:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/tree.cc:331:40: note:   mismatched types 'std::pair<_T1, _T2>' and 'std::_Rb_tree_color'
  std::swap(__y->_M_color, __z->_M_color);
                                        ^
In file included from avr-libstdcpp/include/bits/stl_algobase.h:64:0,
                 from avr-libstdcpp/include/bits/stl_tree.h:63,
                 from avr-libstdcpp/src/tree.cc:53:
avr-libstdcpp/include/bits/stl_pair.h:541:5: note: candidate: template<class _T1, class _T2> typename std::enable_if<(! std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value)>::type std::swap(std::pair<_T1, _T2>&, std::pair<_T1, _T2>&) <deleted>
     swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete;
     ^~~~
avr-libstdcpp/include/bits/stl_pair.h:541:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/tree.cc:331:40: note:   mismatched types 'std::pair<_T1, _T2>' and 'std::_Rb_tree_color'
  std::swap(__y->_M_color, __z->_M_color);
                                        ^
In file included from avr-libstdcpp/include/bits/node_handle.h:39:0,
                 from avr-libstdcpp/include/bits/stl_tree.h:72,
                 from avr-libstdcpp/src/tree.cc:53:
avr-libstdcpp/include/optional:1171:5: note: candidate: template<class _Tp> std::enable_if_t<(is_move_constructible_v<_Tp> && is_swappable_v<_Tp>)> std::swap(std::optional<_Tp>&, std::optional<_Tp>&)
     swap(optional<_Tp>& __lhs, optional<_Tp>& __rhs)
     ^~~~
avr-libstdcpp/include/optional:1171:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/tree.cc:331:40: note:   mismatched types 'std::optional<_Tp>' and 'std::_Rb_tree_color'
  std::swap(__y->_M_color, __z->_M_color);
                                        ^
In file included from avr-libstdcpp/include/bits/node_handle.h:39:0,
                 from avr-libstdcpp/include/bits/stl_tree.h:72,
                 from avr-libstdcpp/src/tree.cc:53:
avr-libstdcpp/include/optional:1177:5: note: candidate: template<class _Tp> std::enable_if_t<(!(is_move_constructible_v<_Tp> && is_swappable_v<_Tp>))> std::swap(std::optional<_Tp>&, std::optional<_Tp>&) <deleted>
     swap(optional<_Tp>&, optional<_Tp>&) = delete;
     ^~~~
avr-libstdcpp/include/optional:1177:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/tree.cc:331:40: note:   mismatched types 'std::optional<_Tp>' and 'std::_Rb_tree_color'
  std::swap(__y->_M_color, __z->_M_color);
                                        ^
In file included from avr-libstdcpp/src/tree.cc:53:0:
avr-libstdcpp/include/bits/stl_tree.h:1655:5: note: candidate: template<class _Key, class _Val, class _KeyOfValue, class _Compare, class _Alloc> void std::swap(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&, std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&)
     swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
     ^~~~
avr-libstdcpp/include/bits/stl_tree.h:1655:5: note:   template argument deduction/substitution failed:
avr-libstdcpp/src/tree.cc:331:40: note:   mismatched types 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>' and 'std::_Rb_tree_color'
  std::swap(__y->_M_color, __z->_M_color);

Improve docs or can docs be found elsewhere?

This is another question, with no expectation on change, regarding the cool STL port.

When I look at the markdown for this repository, it is very clear what it is.

I would, however, really like to see some more details in the docs in the markdown area.

Simply answering some of the queries/issues listed below would have been enough for me to really get a better idea of what's going on in this work.

  • What is the original source of this STL?
  • Does it originate from something like an arm-none-eabi? Was anything special needed with compiler switches or needed in places like <config/bits> area(s)?
  • Could you provide more details regarding how the STL port evolved into this state?
  • What simplifications were undertaken for IO-streaming (such as primitive char-exchange via UART?)?
  • How do you use it? Sure, I see that there is is an example, but how do you add the whatever/include path? That kind of stuff would help right up front on the markdown.

I would also recomment, although this is not necessary, getting a CI running. You could put at least one single CI job into this thing that includes your ARV image together with this repo cloned into the CI job-space in order to compile a few things with <array> and <algorithm>. Compilation (not running/simulating) it would bve a good enough start...

I can/could help with any/all of these matters if you like or if there is any interest in this.

No licence files in repo

This is a fork of libstdc++ but does not provide the COPYING3 and COPYING.RUNTIME files referred to in the headers.

Inclusion with `-isystem` generates "template with C linkage"

echo '#include <algorithm>' | avr-gcc -x c++ -isystem avr-libstdcpp/include -c -o a.out -
In file included from libstdcpp/include/functional:49:0,
                 from <stdin>:1:
libstdcpp/include/bits/stl_function.h:104:3: error: template with C linkage
   template<typename _Arg, typename _Result>
   ^
libstdcpp/include/bits/stl_function.h:117:3: error: template with C linkage
   template<typename _Arg1, typename _Arg2, typename _Result>
   ^
libstdcpp/include/bits/stl_function.h:166:3: error: template with C linkage
   template<typename _Tp>
...
$ avr-gcc -v
Using built-in specs.
Reading specs from /usr/lib/gcc/avr/5.4.0/device-specs/specs-avr2
COLLECT_GCC=avr-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/avr/5.4.0/lto-wrapper
Target: avr
Configured with: ../gcc/configure -v --enable-languages=c,c++ --prefix=/usr/lib --infodir=/usr/share/info --mandir=/usr/share/man --bindir=/usr/bin --libexecdir=/usr/lib --libdir=/usr/lib --enable-shared --with-system-zlib --enable-long-long --enable-nls --without-included-gettext --disable-libssp --disable-libcc1 --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=avr ASFLAGS= CFLAGS='-g -O2 -ffile-prefix-map=/build/gcc-avr-VxQ9yL/gcc-avr-5.4.0+Atmel3.6.2=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat ' CPPFLAGS='-Wdate-time -D_FORTIFY_SOURCE=2' CXXFLAGS='-g -O2 -ffile-prefix-map=/build/gcc-avr-VxQ9yL/gcc-avr-5.4.0+Atmel3.6.2=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat ' DFLAGS=-frelease FCFLAGS='-g -O2 -ffile-prefix-map=/build/gcc-avr-VxQ9yL/gcc-avr-5.4.0+Atmel3.6.2=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong' FFLAGS='-g -O2 -ffile-prefix-map=/build/gcc-avr-VxQ9yL/gcc-avr-5.4.0+Atmel3.6.2=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong' GCJFLAGS='-g -O2 -ffile-prefix-map=/build/gcc-avr-VxQ9yL/gcc-avr-5.4.0+Atmel3.6.2=. -flto=auto -ffat-lto-objects -fstack-protector-strong' LDFLAGS='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro' OBJCFLAGS='-g -O2 -ffile-prefix-map=/build/gcc-avr-VxQ9yL/gcc-avr-5.4.0+Atmel3.6.2=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat ' OBJCXXFLAGS='-g -O2 -ffile-prefix-map=/build/gcc-avr-VxQ9yL/gcc-avr-5.4.0+Atmel3.6.2=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat '
Thread model: single
gcc version 5.4.0 (GCC) 

Regular gcc for x86-64 understands that command-line just fine. Also, using plain -I instead of -isystem solves the issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.