Могу ли я определить, несмотря на типизацию, имеет ли тип модификатор const?

Как и в вопросе, могу ли я узнать, имеет ли тип const модификатор через typetraits?

1

Решение

В 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;
};
8

Другие решения

Ты можешь использовать станд :: 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
4

По вопросам рекламы [email protected]