作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们看到std::is_const<const int&>::value
总是假的。所以这条指令 #1 永远不会执行。
template <typename T> void g(T&& val)
{
if(is_const<T>::value)
{
#1 if(is_lvalue_reference<T>::value)cout<<"const l reference"<<endl;
else if(is_rvalue_reference<T>::value)cout<<"const r reference"<<endl;
else cout<<"const int"<<endl;
}else
{
if(is_lvalue_reference<T>::value)cout<<"l reference"<<endl;
else if(is_rvalue_reference<T>::value)cout<<" r reference"<<endl;
else cout<<" int"<<endl;
}
}
为什么STL没有为这个问题提供is_reference_const函数?我们可以为此编写这个函数吗?最后,这个函数如is_reference_const<const int&>::value
是真的。
最佳答案
任何东西都在标准中,因为有人想要它,并投入精力让它达到标准,并说服委员会这是一个好主意。
这个有效:
#include <type_traits>
#include <iostream>
template <typename T>
struct is_reference_const
{
static const bool value = std::is_reference<T>::value && std::is_const<typename std::remove_reference<T>::type>::value;
};
int main()
{
std::cout << is_reference_const<const int &>::value << std::endl;
std::cout << is_reference_const<const int>::value << std::endl;
std::cout << is_reference_const<int &>::value << std::endl;
std::cout << is_reference_const<int>::value << std::endl;
}
1
0
0
0
我很惊讶is_const<const int&>::value
是false
.
关于c++ - 如何写is_reference_const函数,使is_reference_const<const int&>::value`为true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27053433/
我是一名优秀的程序员,十分优秀!