std C ++库中有一些能够修改类型的函数,如std::remove_reference
或std::remove_cv
。我想知道是否/为什么没有类似std::remove_const_reference
的东西,例如:
#include <iostream>
#include <type_traits>
template <typename T>
using remove_cref_t = typename std::remove_const<typename std::remove_reference<T>::type>::type;
template <typename T>
void linker_test_type();
int main() {
using type = int volatile const&;
test<remove_cref_t<type>>();
return 0;
}
预期的产出当然是:
undefined reference to `void linker_test_type<int volatile>()'
答案 0 :(得分:1)
我在std-proposals two years ago中提到了这一点。说实话,我不认为偶然的用例需要包含在标准中,因为我们可以通过组合其他两个来构建这个特征。我们可以想到许多有用的特性,但是只应该提供基本的构建块,或者我们冒着用我们无法记住的特征(这有点无用)污染库的风险。