引用与template-template类一起折叠
reference collapsing with template template class
为什么引用折叠不适用于
template<typename T, template<typename> class C>
void f(C<T> && x); // x declaration is an rvalue!
如何完善正向,如何避免中常量左值ref、左值ref和右值ref的所有组合过载
template<typename T> // not necessary a template template class here
void f(C<T>, C<T>, C<T>, ..., C<T>)
{
// do something with T
// move or copy arguments to a function
}
您将不得不使用某种SFINAE,不幸的是
template<typename T>
struct HasOneTypeParam : std::false_type { };
template<typename T, template<typename> class C>
struct HasOneTypeParam<C<T>> : std::true_type { };
template<typename ...T>
struct SlurpThemAll { typedef int type; };
template<typename ...T,
typename SlurpThemAll<
bool[HasOneTypeParam<typename std::decay<T>::type>::value * 2 - 1]...
>::type = 0>
void f(T &&... x);
根据你实际想要做的事情,你可以要求所有的std::decay<T>::type
都是相同的类型,并使用更多的SFINAE技巧。
相关文章:
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将C++中的库和头与MinGW一起使用
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 为什么我不能将 rand() 与数组的大小一起使用?
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 正在折叠转发引用
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 将fold表达式与std::一起用于两个元组
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 将 std::allocate_shared 与多态资源分配器一起使用
- 带有用户定义类的c++折叠表达式
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 将 exprtk 与自定义类的对象一起使用
- 将 std::set 与基于键的比较器一起使用
- 将 C++ 类与 Rcpp 一起使用,从 C 或 R 修改它
- 如何将 Eigen::Ref 与 pybind11 一起使用?
- 引用与template-template类一起折叠