Ich versuche, den Größencode für das Cbor-Format mit "SFINAE" zu implementieren, aus Mangel an einem besseren Wort. Aber es funktioniert nicht, wie zum Beispiel size_code<3>
0x1b
auswertet. Was ist los mit dir?Variable Vorlage "SFINAE" funktioniert nicht
template <::std::size_t N,
typename = ::std::enable_if_t<N <= 0x17>
>
constexpr ::std::uint8_t const size_code = N;
template <::std::size_t N,
typename = ::std::enable_if_t<(N > 0x17) &&
(N <= ::std::numeric_limits<::std::uint8_t>::max())
>
>
constexpr ::std::uint8_t const size_code = 0x18;
template <::std::size_t N,
typename = ::std::enable_if_t<
(N > ::std::numeric_limits<::std::uint8_t>::max()) &&
(N <= ::std::numeric_limits<::std::uint16_t>::max())
>
>
constexpr ::std::uint8_t const size_code = 0x19;
template <::std::size_t N,
typename = ::std::enable_if_t<
(N > ::std::numeric_limits<::std::uint16_t>::max()) &&
(N <= ::std::numeric_limits<::std::uint32_t>::max())
>
>
constexpr ::std::uint8_t const size_code = 0x1a;
template <::std::size_t N,
typename = ::std::enable_if_t<
(N > ::std::numeric_limits<::std::uint32_t>::max()) &&
(N <= ::std::numeric_limits<::std::uint64_t>::max())
>
>
constexpr ::std::uint8_t const size_code = 0x1b;
Es sollte nicht alles bewerten. Dieser Code ist fehlerhaft für die mehrfache Neudefinition von 'size_code'. –
Sie wären wahrscheinlich besser dran, eine "constexpr" -Funktion dafür zu schreiben. – TartanLlama
@ T.C. Gcc Kuriosität, aber Clang erkennt dies. – user1095108