Lin*_*gxi 7 c++ templates default-arguments variadic-templates c++11
我希望编译以下代码:
#include <iostream>
template <class Tag = void, class T = int, class... Args>
void print(T val = T{}, Args... args) {
std::cout << val << ' ' << sizeof...(args) << std::endl;
}
int main() {
print();
print(3.14);
print(0, 1, 2);
}
Run Code Online (Sandbox Code Playgroud)
尽管有unused-but-set-parameter警告,它在GCC 5.2(C++ 11)上编译,但是clang 3.6(C++ 11)给出了以下错误消息:
main.cpp:4:33: error: missing default argument on parameter 'args'
void print(T val = T{}, Args... args) {
^
main.cpp:11:5: note: in instantiation of function template specialization 'print<void, int, int, int>' requested here
print(0, 1, 2);
^
main.cpp:4:33: error: missing default argument on parameter 'args'
void print(T val = T{}, Args... args) {
^
2 errors generated.
Run Code Online (Sandbox Code Playgroud)
那么,谁是正确的?
| 归档时间: |
|
| 查看次数: |
616 次 |
| 最近记录: |