我在这里没有看到任何类似于功能测试宏的内容: https://en.cppreference.com/w/cpp/utility/feature_test
原论文中好像没有提到: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0550r2.pdf
__cplusplus
的测试也不合适,因为 C++20 尚未发布,但此功能可能已经得到支持。
特性测试宏支持是否会在标准化过程中稍后出现,或者这个添加是否太小而无法成为特性测试宏的一部分,因此想要有条件地使用标准版本的人必然会回到旧学校手动编译器版本检查?
最佳答案
浏览[tab:cpp.predefined.ft] ,我也没有看到任何可能与之相关的东西。大概是因为这个特性被认为是次要的,而且很容易自己实现:
template <typename T>
struct remove_cvref :remove_cv<remove_reference_t<T>> {};
template <typename T>
using remove_cvref_t = typename remove_cvref<T>::type;
如果您只是想编写可移植代码,推出您自己的版本就足够了。不幸的是,如果您真的想检测此功能的可用性,您可能不得不求助于“老派手动编译器版本检查”。
关于c++ - 如何测试标准库中是否定义了 std::remove_cvref?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57072547/