http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61075

Denes Matetelki <denes.matetelki at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
               Host|                            |Linux  3.13.5-gentoo #10
                   |                            |SMP Fri Apr 25 16:12:35
                   |                            |CEST 2014 x86_64 Intel(R)
                   |                            |Xeon(R) CPU W3690 @ 3.47GHz
                   |                            |GenuineIntel GNU/Linux

--- Comment #1 from Denes Matetelki <denes.matetelki at gmail dot com> ---
#include <vector>
#include <numeric>
#include <iostream>

class Custom
{
public:
  Custom(int i) : m_i(i) {}
  int getI() const { return m_i; }

private:
  int m_i;
};

int main (int /*argc*/, char* /*argv*/[])
{
  std::vector<int> v(10, 1);
  const int v_sum = std::accumulate(v.begin(), v.end(), 0,
                                    [](int sum, int i) { return sum + i; } );


  std::vector<Custom> v2(10, Custom(1));
  const int v2_sum = std::accumulate(v2.begin(), v2.end(), 0,
                                    [](int sum, const Custom& c) { return sum +
c.getI(); } );

  return 0;
}

Compiling with parallel mode:

parallel_accumulate.cpp:33:93:   required from here
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.2/include/g++-v4/parallel/par_loop.h:102:15:
error: cannot convert
'std::__iterator_traits<__gnu_cxx::__normal_iterator<Custom*,
std::vector<Custom> >, true>::value_type {aka Custom}' to 'int' in
initialization
      __reduct = new _Result(__f(__o, __begin + __start));

Reply via email to