[Portability] Boost 1.40 has no `declval` definition yet as like as stdlib.