gpt4 book ai didi

c++ - 这个模板到底检查了什么?

转载 作者:行者123 更新时间:2023-11-28 01:18:54 25 4
gpt4 key购买 nike

我正在研究这段代码:

#include <type_traits>

template<typename T, typename T2>
constexpr bool Assignable = std::is_assignable<T&,T2>::value;

template<typename T>
void test() {
static_assert(Assignable<T, std::string>, "hello1");
static_assert(Assignable<T&, std::string>, "hello2");
}

int main()
{
test<int>();
}

我想知道什么static_assert(Assignable<T&, std::string>, "hello2");检查到底?

Assignable已经使用 T&里面,打电话static_assert(Assignable<T, std::string>, "hello1");应该检查是否引用类型 T可分配给 std::string .我想知道什么T&里面static_assert(Assignable<T&, std::string>, "hello2");是吗?

问候

最佳答案

由于reference collapsing rules ,这个:

static_assert(Assignable<T&, std::string>, "hello2");

在逻辑上等同于这样的代码:

static_assert(Assignable<T, std::string>, "hello2");

为什么?长话短说 - 对左值引用的左值引用折叠为左值引用。

关于c++ - 这个模板到底检查了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57611779/

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