正如问题所说,我可以通过const
找出某个类型是否有typetraits
修饰符吗?
答案 0 :(得分:8)
在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;
};
答案 1 :(得分:4)
如果您有c ++ 11支持,则可以使用std::is_const。否则,请使用boost::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