Bon*_*ero 13 c++ c++-concepts c++20
看看这段代码。
#include <type_traits>
template<typename T>
struct C;
template<typename T>
requires std::is_integral_v<T>
struct C<T>
{
void f();
};
template<typename T>
requires std::is_integral_v<T>
void C<T>::f()
{
}
template<typename T>
requires std::is_pointer_v<T>
struct C<T>
{
void f();
};
template<typename T>
requires std::is_pointer_v<T>
void C<T>::f()
{
}
Run Code Online (Sandbox Code Playgroud)
我想将函数添加到专业化中,如您所见,即非专业化变体中不存在的函数。但编译器说
类模板“C<T>”没有成员“f”。
上面的代码在 GCC 11.1.0 上编译没有任何问题,但在 Clang 13 或当前的 MSVC 上则不然。
我想转发声明的类C 而不进行任何实现。我不想有一个定义的类C,里面有一个f。在专业化中添加的内容f在我关心的基类中没有任何意义。
| 归档时间: |
|
| 查看次数: |
219 次 |
| 最近记录: |