Как и в вопросе, могу ли я узнать, имеет ли тип const
модификатор через typetraits
?
В C ++ 11 вы можете использовать std::is_const
. Просто включите <type_traits>
заголовок.
В C ++ 03 это легко реализовать самостоятельно:
template<typename T>
struct is_const
{
const static bool value = false;
};
template<typename T>
struct is_const<const T>
{
const static bool value = true;
};
Ты можешь использовать станд :: is_const, если у вас есть поддержка C ++ 11. В противном случае используйте повышение :: is_const.
struct Foo {};
#include <iostream>
#include <type_traits>
....
std::cout << std::is_const<Foo>::value << '\n'; // false
std::cout << std::is_const<const Foo>::value << '\n'; // true