gpt4 book ai didi

C++ 概念精简版和类型别名声明

转载 作者:可可西里 更新时间:2023-11-01 16:40:12 25 4
gpt4 key购买 nike

是否可以使用 typedefusing 在概念中声明类型别名,如 Concepts TS 所提议的那样?如果我尝试类似下面的 MWE,代码不会编译(使用 gcc 6.2.1 和 -fconcepts 开关)

#include <type_traits>

template<typename T>
concept bool TestConcept ()
{
return requires(T t)
{
using V = T;
std::is_integral<V>::value;
};
}

int main()
{
return 0;
}

产生的错误:

main.cpp: In function ‘concept bool TestConcept()’:
main.cpp:8:9: error: expected primary-expression before ‘using’
using V = T;
^~~~~
main.cpp:8:9: error: expected ‘}’ before ‘using’
main.cpp:8:9: error: expected ‘;’ before ‘using’
main.cpp:4:14: error: definition of concept ‘concept bool TestConcept()’ has multiple statements
concept bool TestConcept ()
^~~~~~~~~~~
main.cpp: At global scope:
main.cpp:11:1: error: expected declaration before ‘}’ token
}
^

最佳答案

没有。根据概念 TS,要求是:

requirement:
    simple-requirement
    type-requirement
    compound-requirement
    nested-requirement

其中 simple-requirement 是一个 expression 后跟 ;type-requirement 是某物像 typename T::inner。另外两个听起来就像名字所暗示的那样。

类型别名是声明,不是表达式,因此不符合要求的要求。

关于C++ 概念精简版和类型别名声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40332980/

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