虽然是typetraits,但是我可以确定类型是否具有const修饰符吗?

时间:2012-09-16 20:28:12

标签: c++ typetraits

正如问题所说,我可以通过const找出某个类型是否有typetraits修饰符吗?

2 个答案:

答案 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