gpt4 book ai didi

c++ - 如何写is_reference_const函数,使is_reference_const::value`为true

转载 作者:行者123 更新时间:2023-11-28 06:34:02 25 4
gpt4 key购买 nike

我们看到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&>::valuefalse .

关于c++ - 如何写is_reference_const函数,使is_reference_const<const int&>::value`为true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27053433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com