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));