我要const_value_type
即使 T
也是常量是一个指针,这对于 std::add_const<>
是不可能的
所以我尝试了这样的事情:
template<typename value_type, bool is_pointer>
struct add_const_pointer{
typedef const value_type type;
};
template<typename value_type>
struct add_const_pointer<value_type, true>{
typedef const value_type *type;
};
template<typename T>
class Foo
{
public:
typedef T value_type;
typedef add_const_pointer<std::remove_pointer<T>, std::is_pointer<T>::value>::type const_value_type;
// here I get compiler error: missing type specifier - int assumed.
}
但我收到编译器错误:缺少类型说明符 - 假定为 int。
最佳答案
clang
错误消息会有所帮助
typedef typename add_const_pointer<
// ~~~~~~~~ Add typename
std::remove_pointer<T>,
std::is_pointer<T>::value>::type
const_value_type;
关于c++ - 如何在模板中添加 const 限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27045520/