相关疑难解决方法(0)

是否可以完善转发模板模板参数

我知道如何完善一个参数.但是,我从不同的来源(例如,有效的现代C++第24项 - 斯科特迈耶斯)中读到,当你拥有确切的模板名称时,人们只能完美地前进,例如:

template<typename T>
void foo(T&& param) { bar(std::forward<T>(param)); }
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是,如果有一种方法可以完美地转发模板模板参数,例如:

template<template<int, class TypeT> class Vector, int Size, typename TypeT>
void foo(Vector<Size, TypeT>&& param) { bar(std::forward<Vector<Size, TypeT>>(param)); }
Run Code Online (Sandbox Code Playgroud)

当我编译上面的代码时,我收到一条错误消息:"你不能将左值绑定到右值引用"(VC12),这告诉我编译器不会将&&识别为"通用引用",而是将其作为右值引用.这个完美的前锋对我来说很有用,因为我可以利用推导出的TypeT和Size.

问题:是否可以完善转发模板模板参数?如果是这样,我的语法在哪里不正确?

谢谢!

c++ template-templates perfect-forwarding

4
推荐指数
1
解决办法
689
查看次数