Diyelim ki böyle bir çağrılabilir türü var:
struct mutable_callable
{
int my_mutable = 0;
int operator()() { // Not const
return my_mutable++;
}
};
Not mutable_callable
olmayan bir const sahiptir operator()
değiştirir üye değişkeni olduğunu .....
Şimdi varsayalım türümden bir std::function
dışarı:
std::function<int()> foo = mutable_callable{};
Şimdi bunu yapabilirim:
void invoke(std::function<int()> const& z)
{
z();
}
int main()
{
invoke(foo); // foo changed.....oops
}
Şimdi bildiğim kadarıyla söyleyebilirim std::function
s operator()
olduğu const
: uyarınca
) (https://en.cppreference.com/w/cpp/utility/functional/function/operator
Yani benim içimdeki his, bunu yapamamanız gerektiğidir .....
Ama sonra şuraya bakın: https://en.cppreference.com/w/cpp/utility/functional/function/function
Bu çağrılabilir tür sabit olup olmadığını herhangi bir kısıtlama koymak gibi görünmüyor operator()
......
Ben varsayarak doğru duyuyorum: Bu benim soru Yani std::function<int()> const&
esasen aynı şey std::function<int()>&
olduğunu ikisinin davranışları arasındaki fark hiçbir aslında orada olduğunu ...... ve bu durumda ise neden değil mi const
doğru?
std::function
uygulamasının iç kısımlarının küçük bir parçası : i.stack.imgur.com/eNenN.png burada using _Ptrt = _Func_base<_Ret, _Types...>
. Diyeceğimi dedim.
std::function
içinde eşdeğer birstruct a{ std::any x; };
..... var