Согласно 5.1.2 спецификации N3291 C ++ 0x, лямбда-оператор () равен const
, если вы явно не объявите его mutable
:
Этот оператор вызова функции объявляется const
(9.3.1) тогда и только тогда, когда
За параметром-объявлением-выражением выражения не следует mutable
.
Вы можете использовать магию метапрограммирования шаблонов, чтобы определить, что есть что.
Однако следует отметить, что, как только func
выходит из области видимости, вы больше не можете использовать этот указатель на член. И это указатель на член, а не указатель на функцию, поэтому вы не можете конвертировать между ними.