例如:
<?php
$path = sprintf('advertiser_images/%s', $_POST['data'][0]);
mkdir($path, 0755, true);
?>
或:
template<class... keys>
struct{
{ virtual keys* getContents(foo* Foo) const = 0 }...;
}
或任何具有类似效果的东西?
答案 0 :(得分:2)
函数或方法无法返回参数包。
虽然函数可以返回std::tuple
:
template<class... keys>
struct something {
virtual std::tuple<keys...> getContents(foo* Foo) const = 0;
}
您还可以将此模板专门用于单个类型,并返回类型而不是单元素元组;并将其专门用于空参数包,并返回void
。
编辑:
你澄清了你的问题。你试图做一些不同的事情,你的初步解释可以理解为有点不合时宜。
你可以完成你正在寻找的东西,但它有点复杂,需要递归模板和专业化,但看起来这就是你想要的。
class bar;
template<typename ...Keys> struct getcontents_base;
template<>
struct getcontents_base<> {
};
template<typename firstKey, typename ...remainingKeys>
struct getcontents_base<firstKey, remainingKeys...>
: getcontents_base<remainingKeys...> {
virtual bar *getBar(firstKey *foo) const=0;
};
struct getcontents : public getcontents_base<int, char> {
bar *getBar(int *) const override {}
bar *getBar(char *) const override {}
};
struct notgetcontents : public getcontents_base<int, char> {};
void foo()
{
struct getcontents c; // This will compile fine.
struct notgetcontents c2; // This will result in a compilation error
// because the virtual methods have not
// been defined.
}