boostorg / hana

Your standard library for metaprogramming
http://boostorg.github.io/hana
Boost Software License 1.0
1.7k stars 216 forks source link

Strange behavior of `hana::partial` #528

Open fdevinc opened 8 months ago

fdevinc commented 8 months ago

Hello, and thank you for the excellent library! I found a strange behavior using hana::partial as shown in the following snippet:

auto lambda = [](int& i) {
    std::cout << i++ << " ";
    std::cout << i << std::endl;
};
const int j  = 0;
auto partial = hana::partial(lambda, j);
partial();

The above will print 0 1 and change the value of the constant variable i. Is this behavior expected? If I do not store the output of hana::partial, then the code does not compile as desired:

auto lambda = [](int& i) {
    std::cout << i++ << " ";
    std::cout << i << std::endl;
};
const int j  = 0;
hana::partial(lambda, j)();    // <= Error!