从模板类中为可变参数模板函数提供信息

时间:2017-10-20 12:32:00

标签: c++ templates gcc clang friend

一个朋友如何从模板类中获得可变参数模板?我没做什么似乎工作,因为类中的友元函数声明似乎为可变参数函数引入了一个模糊的重载

例如,这不起作用

template <typename... Args>
auto foo(Args&&... args);

template <typename T>
class Something {
public:
    template <typename... Args>
    friend auto foo(Args&&...);

private:
    int foo(int) { return 1; }
};

template <typename... Args>
auto foo(Args&&...) {}

int main() {
    foo(Something<int>{});
}

预先命名命名空间中的函数也不起作用..可以这样做吗?我不能依赖接受类本身作为参数的函数,因为函数是可变参数并且需要接受n个参数,这些参数是具有不同参考资格的不同类型的Something的实例化

请注意,这似乎适用于gcc(即使没有好友声明)https://wandbox.org/permlink/cVa18noVCX189566,也不适用于clang https://wandbox.org/permlink/7MqMO3lgXXp2tAWU

在这里做什么是正确的?谁是对的 - gcc还是clang?

0 个答案:

没有答案