【发布时间】:2021-11-23 04:06:34
【问题描述】:
有没有办法让下面的代码不那么臃肿?
我的意思是以某种方式同时加入类型和引用(|| 不起作用)。
template<typename T>
concept IntegralVector = std::integral<typename T::value_type> &&
requires(T t)
{
{ t.size() } -> std::convertible_to<std::size_t>;
}
&& (requires(T t)
{
{ t[0] } -> std::same_as<typename T::value_type&>;
} || requires(T t)
{
{ t[0] } -> std::same_as<typename T::value_type>;
});
一个有效的技巧可以是:
{ 0 + t[0] } -> std::integral;
但我想坚持typename T::value_type
【问题讨论】: