Skip to content

Commit

Permalink
Well this feels a bit hacky
Browse files Browse the repository at this point in the history
  • Loading branch information
Vultraz committed Dec 1, 2020
1 parent ffeb062 commit 37ea96e
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions src/lexical_cast.hpp
Expand Up @@ -121,6 +121,9 @@ struct bad_lexical_cast : std::exception

namespace implementation {

template<typename From>
using constless_ptr_t = std::add_pointer_t<std::remove_const_t<std::remove_pointer_t<From>>>;

/**
* Base class for the conversion.
*
Expand Down Expand Up @@ -193,7 +196,7 @@ struct lexical_caster<
long long
, From
, void
, std::enable_if_t<std::is_same<std::remove_const_t<std::remove_pointer_t<From>>, char>::value>
, std::enable_if_t<std::is_same<constless_ptr_t<From>, char*>::value>
>
{
long long operator()(From value, boost::optional<long long> fallback) const
Expand Down Expand Up @@ -249,7 +252,7 @@ struct lexical_caster<
To
, From
, std::enable_if_t<std::is_integral<To>::value && std::is_signed<To>::value && !std::is_same<To, long long>::value>
, std::enable_if_t<std::is_same<std::remove_const_t<std::remove_pointer_t<From>>, char>::value>
, std::enable_if_t<std::is_same<constless_ptr_t<From>, char*>::value>
>
{
To operator()(From value, boost::optional<To> fallback) const
Expand Down Expand Up @@ -307,7 +310,7 @@ struct lexical_caster<
To
, From
, std::enable_if_t<std::is_floating_point<To>::value>
, std::enable_if_t<std::is_same<std::remove_const_t<std::remove_pointer_t<From>>, char>::value>
, std::enable_if_t<std::is_same<constless_ptr_t<From>, char*>::value>
>
{
To operator()(From value, boost::optional<To> fallback) const
Expand Down Expand Up @@ -376,7 +379,7 @@ struct lexical_caster<
unsigned long long
, From
, void
, std::enable_if_t<std::is_same<std::remove_const_t<std::remove_pointer_t<From>>, char>::value>
, std::enable_if_t<std::is_same<constless_ptr_t<From>, char*>::value>
>
{
unsigned long long operator()(From value, boost::optional<unsigned long long> fallback) const
Expand Down Expand Up @@ -433,7 +436,7 @@ struct lexical_caster<
To
, From
, std::enable_if_t<std::is_unsigned<To>::value && !std::is_same<To, unsigned long long>::value>
, std::enable_if_t<std::is_same<std::remove_const_t<std::remove_pointer_t<From>>, char>::value>
, std::enable_if_t<std::is_same<constless_ptr_t<From>, char*>::value>
>
{
To operator()(From value, boost::optional<To> fallback) const
Expand Down

0 comments on commit 37ea96e

Please sign in to comment.