【发布时间】:2014-02-06 19:54:17
【问题描述】:
考虑这段代码sn-p:
void Foo(std::string str1, std::string str2) {}
template<typename... Types>
void Bar()
{
Foo(Types{}...); // wont compile
}
Bar<std::string, std::string>();
我在这里要做的是在Bar 方法中默认构造两个std::string 对象并将它们传递给Foo。但是我徒劳的尝试(其中一个在 sn-p 中)无法编译,所以我想知道这是否可能。
我使用 VC 2013 编译,这会引发编译器错误。如 cmets 中所述,其他编译器可以处理它。谁能说出上面的 sn-p 是否符合标准?
【问题讨论】:
-
@0x499602D2 有趣,用 VC 2013 尝试了你的代码,但它失败了(正如我之前观察到的那样),可能是编译器错误
-
也适用于 clang 3.5,你的编译器和版本是什么?
标签: c++ visual-c++ c++11 variadic-templates compiler-bug