Skip to content

Instantly share code, notes, and snippets.

@splinterofchaos
Created November 28, 2012 18:31
Show Gist options
  • Select an option

  • Save splinterofchaos/4163078 to your computer and use it in GitHub Desktop.

Select an option

Save splinterofchaos/4163078 to your computer and use it in GitHub Desktop.
An error message for one line of code involving template trickery.
examples.cpp: In function 'int main()':
examples.cpp:234:10: warning: variable 'o' set but not used [-Wunused-but-set-variable]
In file included from /usr/include/c++/4.7/bits/stl_algo.h:68:0,
from /usr/include/c++/4.7/algorithm:63,
from Pure.h:4,
from examples.cpp:2:
/usr/include/c++/4.7/functional: In instantiation of 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes ...) [with _Res = std::unique_ptr<std::pair<int, int> >; _Functor = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; _ArgTypes = {int}]':
/usr/include/c++/4.7/functional:2298:6: required from 'std::function<_Res(_ArgTypes ...)>::function(_Functor, typename std::enable_if<(! std::is_integral<_Functor>::value), std::function<_Res(_ArgTypes ...)>::_Useless>::type) [with _Functor = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; _Res = std::unique_ptr<std::pair<int, int> >; _ArgTypes = {int}; typename std::enable_if<(! std::is_integral<_Functor>::value), std::function<_Res(_ArgTypes ...)>::_Useless>::type = std::function<std::unique_ptr<std::pair<int, int> >(int)>::_Useless]'
Functional.h:14:64: required from 'constexpr pure::Forwarder<F>::Forwarder(G&& ...) [with G = {pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int, std::default_delete<int> >(int)>, std::function<std::unique_ptr<int, std::default_delete<int> >(int)> > >, pure::arrow::Duplicate> >}; F = std::function<std::unique_ptr<std::pair<int, int> >(int)>]'
Arrow.h:158:53: required from 'constexpr pure::arrow::KleisliF<M, S, T, F>::KleisliF(G) [with G = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; M = std::unique_ptr; S = int; T = std::pair<int, int>; F = std::function<std::unique_ptr<std::pair<int, int> >(int)>]'
examples.cpp:648:75: required from here
/usr/include/c++/4.7/functional:1912:40: error: no match for call to '(pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >) (int)'
In file included from examples.cpp:4:0:
Arrow.h:156:8: note: candidate is:
In file included from List.h:3:0,
from Pure.h:18,
from examples.cpp:2:
Functional.h:17:20: note: template<class ... X> constexpr decltype (((pure::Forwarder*)this)->pure::Forwarder<F>::f((declval<X>)()...)) pure::Forwarder::operator()(X&& ...) const [with X = {X ...}; F = pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate>]
Functional.h:17:20: note: template argument deduction/substitution failed:
Functional.h: In substitution of 'template<class ... X> constexpr decltype (((pure::Forwarder*)this)->pure::Forwarder<F>::f((declval<X>)()...)) pure::Forwarder::operator()(X&& ...) const [with X = {X ...}; F = pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate>] [with X = {int}]':
/usr/include/c++/4.7/functional:1912:40: required from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes ...) [with _Res = std::unique_ptr<std::pair<int, int> >; _Functor = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; _ArgTypes = {int}]'
/usr/include/c++/4.7/functional:2298:6: required from 'std::function<_Res(_ArgTypes ...)>::function(_Functor, typename std::enable_if<(! std::is_integral<_Functor>::value), std::function<_Res(_ArgTypes ...)>::_Useless>::type) [with _Functor = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; _Res = std::unique_ptr<std::pair<int, int> >; _ArgTypes = {int}; typename std::enable_if<(! std::is_integral<_Functor>::value), std::function<_Res(_ArgTypes ...)>::_Useless>::type = std::function<std::unique_ptr<std::pair<int, int> >(int)>::_Useless]'
Functional.h:14:64: required from 'constexpr pure::Forwarder<F>::Forwarder(G&& ...) [with G = {pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int, std::default_delete<int> >(int)>, std::function<std::unique_ptr<int, std::default_delete<int> >(int)> > >, pure::arrow::Duplicate> >}; F = std::function<std::unique_ptr<std::pair<int, int> >(int)>]'
Arrow.h:158:53: required from 'constexpr pure::arrow::KleisliF<M, S, T, F>::KleisliF(G) [with G = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; M = std::unique_ptr; S = int; T = std::pair<int, int>; F = std::function<std::unique_ptr<std::pair<int, int> >(int)>]'
examples.cpp:648:75: required from here
Functional.h:17:20: error: no match for call to '(pure::Forwarder<pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >::function {aka pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate>}) (int)'
Functional.h:383:37: note: candidate is:
Functional.h:391:5: note: template<class X, class ... Y> constexpr decltype (((pure::Composition*)0)->pure::Composition<F, G>::f(((pure::Composition*)0)->pure::Composition<F, G>::g(declval<X>()), (declval<Y>)()...)) pure::Composition::operator()(X&&, Y&& ...) const [with X = X; Y = {Y ...}; F = pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >; G = pure::arrow::Duplicate]
Functional.h:391:5: note: template argument deduction/substitution failed:
Functional.h: In substitution of 'template<class X, class ... Y> constexpr decltype (((pure::Composition*)0)->pure::Composition<F, G>::f(((pure::Composition*)0)->pure::Composition<F, G>::g(declval<X>()), (declval<Y>)()...)) pure::Composition::operator()(X&&, Y&& ...) const [with X = X; Y = {Y ...}; F = pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >; G = pure::arrow::Duplicate] [with X = int; Y = {}]':
Functional.h:17:20: required by substitution of 'template<class ... X> constexpr decltype (((pure::Forwarder*)this)->pure::Forwarder<F>::f((declval<X>)()...)) pure::Forwarder::operator()(X&& ...) const [with X = {X ...}; F = pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate>] [with X = {int}]'
/usr/include/c++/4.7/functional:1912:40: required from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes ...) [with _Res = std::unique_ptr<std::pair<int, int> >; _Functor = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; _ArgTypes = {int}]'
/usr/include/c++/4.7/functional:2298:6: required from 'std::function<_Res(_ArgTypes ...)>::function(_Functor, typename std::enable_if<(! std::is_integral<_Functor>::value), std::function<_Res(_ArgTypes ...)>::_Useless>::type) [with _Functor = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; _Res = std::unique_ptr<std::pair<int, int> >; _ArgTypes = {int}; typename std::enable_if<(! std::is_integral<_Functor>::value), std::function<_Res(_ArgTypes ...)>::_Useless>::type = std::function<std::unique_ptr<std::pair<int, int> >(int)>::_Useless]'
Functional.h:14:64: required from 'constexpr pure::Forwarder<F>::Forwarder(G&& ...) [with G = {pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int, std::default_delete<int> >(int)>, std::function<std::unique_ptr<int, std::default_delete<int> >(int)> > >, pure::arrow::Duplicate> >}; F = std::function<std::unique_ptr<std::pair<int, int> >(int)>]'
Arrow.h:158:53: required from 'constexpr pure::arrow::KleisliF<M, S, T, F>::KleisliF(G) [with G = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; M = std::unique_ptr; S = int; T = std::pair<int, int>; F = std::function<std::unique_ptr<std::pair<int, int> >(int)>]'
examples.cpp:648:75: required from here
Functional.h:391:5: error: no match for call to '(pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >) (std::pair<int, int>)'
In file included from examples.cpp:4:0:
Arrow.h:156:8: note: candidate is:
In file included from List.h:3:0,
from Pure.h:18,
from examples.cpp:2:
Functional.h:17:20: note: template<class ... X> constexpr decltype (((pure::Forwarder*)this)->pure::Forwarder<F>::f((declval<X>)()...)) pure::Forwarder::operator()(X&& ...) const [with X = {X ...}; F = pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> >]
Functional.h:17:20: note: template argument deduction/substitution failed:
Functional.h: In substitution of 'template<class ... X> constexpr decltype (((pure::Forwarder*)this)->pure::Forwarder<F>::f((declval<X>)()...)) pure::Forwarder::operator()(X&& ...) const [with X = {X ...}; F = pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> >] [with X = {std::pair<int, int>}]':
Functional.h:391:5: required by substitution of 'template<class X, class ... Y> constexpr decltype (((pure::Composition*)0)->pure::Composition<F, G>::f(((pure::Composition*)0)->pure::Composition<F, G>::g(declval<X>()), (declval<Y>)()...)) pure::Composition::operator()(X&&, Y&& ...) const [with X = X; Y = {Y ...}; F = pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >; G = pure::arrow::Duplicate] [with X = int; Y = {}]'
Functional.h:17:20: required by substitution of 'template<class ... X> constexpr decltype (((pure::Forwarder*)this)->pure::Forwarder<F>::f((declval<X>)()...)) pure::Forwarder::operator()(X&& ...) const [with X = {X ...}; F = pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate>] [with X = {int}]'
/usr/include/c++/4.7/functional:1912:40: required from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes ...) [with _Res = std::unique_ptr<std::pair<int, int> >; _Functor = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; _ArgTypes = {int}]'
/usr/include/c++/4.7/functional:2298:6: required from 'std::function<_Res(_ArgTypes ...)>::function(_Functor, typename std::enable_if<(! std::is_integral<_Functor>::value), std::function<_Res(_ArgTypes ...)>::_Useless>::type) [with _Functor = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; _Res = std::unique_ptr<std::pair<int, int> >; _ArgTypes = {int}; typename std::enable_if<(! std::is_integral<_Functor>::value), std::function<_Res(_ArgTypes ...)>::_Useless>::type = std::function<std::unique_ptr<std::pair<int, int> >(int)>::_Useless]'
Functional.h:14:64: required from 'constexpr pure::Forwarder<F>::Forwarder(G&& ...) [with G = {pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int, std::default_delete<int> >(int)>, std::function<std::unique_ptr<int, std::default_delete<int> >(int)> > >, pure::arrow::Duplicate> >}; F = std::function<std::unique_ptr<std::pair<int, int> >(int)>]'
Arrow.h:158:53: required from 'constexpr pure::arrow::KleisliF<M, S, T, F>::KleisliF(G) [with G = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; M = std::unique_ptr; S = int; T = std::pair<int, int>; F = std::function<std::unique_ptr<std::pair<int, int> >(int)>]'
examples.cpp:648:75: required from here
Functional.h:17:20: error: no match for call to '(pure::Forwarder<pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >::function {aka pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> >}) (std::pair<int, int>)'
Functional.h:440:8: note: candidate is:
Functional.h:450:5: note: template<class ... X> constexpr decltype (((pure::BComposition*)0)->pure::BComposition<F, G, H>::f(((pure::BComposition*)0)->pure::BComposition<F, G, H>::g((declval<X>)()...), ((pure::BComposition*)0)->pure::BComposition<F, G, H>::h((declval<X>)()...))) pure::BComposition::operator()(X&& ...) const [with X = {X ...}; F = pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >; G = std::function<std::unique_ptr<int>(int)>; H = std::function<std::unique_ptr<int>(int)>]
Functional.h:450:5: note: template argument deduction/substitution failed:
Functional.h: In substitution of 'template<class ... X> constexpr decltype (((pure::BComposition*)0)->pure::BComposition<F, G, H>::f(((pure::BComposition*)0)->pure::BComposition<F, G, H>::g((declval<X>)()...), ((pure::BComposition*)0)->pure::BComposition<F, G, H>::h((declval<X>)()...))) pure::BComposition::operator()(X&& ...) const [with X = {X ...}; F = pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >; G = std::function<std::unique_ptr<int>(int)>; H = std::function<std::unique_ptr<int>(int)>] [with X = {std::pair<int, int>}]':
Functional.h:17:20: required by substitution of 'template<class ... X> constexpr decltype (((pure::Forwarder*)this)->pure::Forwarder<F>::f((declval<X>)()...)) pure::Forwarder::operator()(X&& ...) const [with X = {X ...}; F = pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> >] [with X = {std::pair<int, int>}]'
Functional.h:391:5: required by substitution of 'template<class X, class ... Y> constexpr decltype (((pure::Composition*)0)->pure::Composition<F, G>::f(((pure::Composition*)0)->pure::Composition<F, G>::g(declval<X>()), (declval<Y>)()...)) pure::Composition::operator()(X&&, Y&& ...) const [with X = X; Y = {Y ...}; F = pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >; G = pure::arrow::Duplicate] [with X = int; Y = {}]'
Functional.h:17:20: required by substitution of 'template<class ... X> constexpr decltype (((pure::Forwarder*)this)->pure::Forwarder<F>::f((declval<X>)()...)) pure::Forwarder::operator()(X&& ...) const [with X = {X ...}; F = pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate>] [with X = {int}]'
/usr/include/c++/4.7/functional:1912:40: required from 'static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes ...) [with _Res = std::unique_ptr<std::pair<int, int> >; _Functor = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; _ArgTypes = {int}]'
/usr/include/c++/4.7/functional:2298:6: required from 'std::function<_Res(_ArgTypes ...)>::function(_Functor, typename std::enable_if<(! std::is_integral<_Functor>::value), std::function<_Res(_ArgTypes ...)>::_Useless>::type) [with _Functor = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; _Res = std::unique_ptr<std::pair<int, int> >; _ArgTypes = {int}; typename std::enable_if<(! std::is_integral<_Functor>::value), std::function<_Res(_ArgTypes ...)>::_Useless>::type = std::function<std::unique_ptr<std::pair<int, int> >(int)>::_Useless]'
Functional.h:14:64: required from 'constexpr pure::Forwarder<F>::Forwarder(G&& ...) [with G = {pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int, std::default_delete<int> >(int)>, std::function<std::unique_ptr<int, std::default_delete<int> >(int)> > >, pure::arrow::Duplicate> >}; F = std::function<std::unique_ptr<std::pair<int, int> >(int)>]'
Arrow.h:158:53: required from 'constexpr pure::arrow::KleisliF<M, S, T, F>::KleisliF(G) [with G = pure::arrow::KleisliF<std::unique_ptr, int, std::pair<int, int>, pure::Composition<pure::arrow::KleisliF<std::unique_ptr, std::pair<int, int>, std::pair<int, int>, pure::BComposition<pure::Part<pure::monad::LiftM, pure::MakeT<std::pair> >, std::function<std::unique_ptr<int>(int)>, std::function<std::unique_ptr<int>(int)> > >, pure::arrow::Duplicate> >; M = std::unique_ptr; S = int; T = std::pair<int, int>; F = std::function<std::unique_ptr<std::pair<int, int> >(int)>]'
examples.cpp:648:75: required from here
Functional.h:450:5: error: no match for call to '(std::function<std::unique_ptr<int>(int)>) (std::pair<int, int>)'
In file included from /usr/include/c++/4.7/bits/stl_algo.h:68:0,
from /usr/include/c++/4.7/algorithm:63,
from Pure.h:4,
from examples.cpp:2:
/usr/include/c++/4.7/functional:2025:11: note: candidate is:
/usr/include/c++/4.7/functional:2306:5: note: _Res std::function<_Res(_ArgTypes ...)>::operator()(_ArgTypes ...) const [with _Res = std::unique_ptr<int>; _ArgTypes = {int}]
/usr/include/c++/4.7/functional:2306:5: note: no known conversion for argument 1 from 'std::pair<int, int>' to 'int'
In file included from List.h:3:0,
from Pure.h:18,
from examples.cpp:2:
Functional.h:450:5: error: no match for call to '(std::function<std::unique_ptr<int>(int)>) (std::pair<int, int>)'
In file included from /usr/include/c++/4.7/bits/stl_algo.h:68:0,
from /usr/include/c++/4.7/algorithm:63,
from Pure.h:4,
from examples.cpp:2:
/usr/include/c++/4.7/functional:2025:11: note: candidate is:
/usr/include/c++/4.7/functional:2306:5: note: _Res std::function<_Res(_ArgTypes ...)>::operator()(_ArgTypes ...) const [with _Res = std::unique_ptr<int>; _ArgTypes = {int}]
/usr/include/c++/4.7/functional:2306:5: note: no known conversion for argument 1 from 'std::pair<int, int>' to 'int'
make: *** [ex] Error 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment