2013/12/3 Lorenzo Caminiti
On Sat, Nov 16, 2013 at 11:18 AM, Mathias Gaunard
wrote: On 16/11/2013 01:02, Mostafa wrote:
#include
#include <utility> int main() { BOOST_IDENTITY_TYPE(( std::pair
const )) x; // This compiles, so the const qualification in the // above macro parameter is ignored. x = std::make_pair(0,1); return 0; }
The omission of const qualification in BOOST_IDENTITY_TYPE types is undocumented. This omission maybe deduced from the documented implementation, but, as noted, that is not part of the library api and is subject to change. I therefore propose that this behaviour be documented as part of the library's public api.
That looks like a bug.
Is there a way to extract the cv-qualifier from a function parameter type at compile-time?
some_mata_function
::type // evaluates to `int const` not just `int` Right now I do the following which looses the cv-qualifier (I also tried to program my own meta-functions but I wan't able to retain the cv-qualifier).
boost::function_traits
::arg1_type // evaluates to `int` and not to `int conat` :(
how about (not tested):
boost::remove_reference< boost::function_traits