2
0
mirror of https://github.com/boostorg/phoenix.git synced 2026-02-02 21:12:13 +00:00

Fix result type deduction failure.

In some cases, result type deduction is failed due to specialization
restricts to const cv-ref even though doesn't change it.

```
const char X = 'x';
phx::find(boost::as_literal("fox"), arg1)(X); // works

char X = 'x';
phx::find(boost::as_literal("fox"), arg1)(X); // should be accepted, but...
```
This commit is contained in:
Kohei Takahashi
2016-08-27 16:36:28 +09:00
parent 7595ec3148
commit 8bd4765b40
3 changed files with 12 additions and 12 deletions

View File

@@ -40,7 +40,7 @@ namespace boost { namespace phoenix {
struct result;
template <typename This, class R, class T>
struct result<This(R&, T const&)>
struct result<This(R&, T&)>
: range_iterator<R>
{};
@@ -202,7 +202,7 @@ namespace boost { namespace phoenix {
struct result;
template <typename This, class R, class T>
struct result<This(R&, T const&)>
struct result<This(R&, T&)>
: range_difference<R>
{};
@@ -314,12 +314,12 @@ namespace boost { namespace phoenix {
struct result;
template <typename This, class R, class T>
struct result<This(R&, T const&)>
struct result<This(R&, T&)>
: range_iterator<R>
{};
template <typename This, class R, class T, class C>
struct result<This(R&, T const&, C)>
struct result<This(R&, T&, C)>
: range_iterator<R>
{};
@@ -358,12 +358,12 @@ namespace boost { namespace phoenix {
struct result;
template <typename This, class R, class T>
struct result<This(R&, T const&)>
struct result<This(R&, T&)>
: range_iterator<R>
{};
template <typename This, class R, class T, class C>
struct result<This(R&, T const&, C)>
struct result<This(R&, T&, C)>
: range_iterator<R>
{};
@@ -414,12 +414,12 @@ namespace boost { namespace phoenix {
struct result;
template <typename This, class R, class T>
struct result<This(R&, T const&)>
struct result<This(R&, T&)>
: result_of::equal_range<R,T>
{};
template <typename This, class R, class T, class C>
struct result<This(R&, T const&, C)>
struct result<This(R&, T&, C)>
: result_of::equal_range<R,T, C>
{};

View File

@@ -158,7 +158,7 @@ namespace boost { namespace phoenix { namespace impl
struct result;
template<typename This, class R, class O, class T, class T2>
struct result<This(R&, O, T const&, T2 const&)>
struct result<This(R&, O, T&, T2&)>
: detail::decay_array<O>
{};
@@ -176,7 +176,7 @@ namespace boost { namespace phoenix { namespace impl
struct result;
template<typename This, class R, class O, class P, class T>
struct result<This(R&, O, P, T const&)>
struct result<This(R&, O, P, T&)>
: detail::decay_array<O>
{};
@@ -238,7 +238,7 @@ namespace boost { namespace phoenix { namespace impl
struct result;
template<typename This, class R, class T>
struct result<This(R&, T const&)>
struct result<This(R&, T&)>
: range_iterator<R>
{
};

View File

@@ -94,7 +94,7 @@ namespace boost { namespace phoenix
, typename C
, typename Arg1
>
struct result<This(C&, Arg1 const &)>
struct result<This(C&, Arg1&)>
{
typedef typename add_reference<C>::type type;
};