#include template struct Node { V value; template Node(Args &&... args) : value(std::forward(args)...) {} }; void foo(std::pair const &p) { Node> node(p); } int main() { return 0; }