1

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

4

2 回答 2

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;
};
于 2012-09-16T20:31:54.897 回答
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
于 2012-09-16T20:29:50.210 回答