Max*_*xpm 8 c++ recursion codeblocks variadic c++11
我在Code :: Blocks中准备了一个简单的可变参数模板测试,但是我收到一个错误:
调用'OutputSizes()'没有匹配函数
这是我的源代码:
#include <iostream>
#include <typeinfo>
using namespace std;
template <typename FirstDatatype, typename... DatatypeList>
void OutputSizes()
{
std::cout << typeid(FirstDatatype).name() << ": " << sizeof(FirstDatatype) << std::endl;
OutputSizes<DatatypeList...>();
}
int main()
{
OutputSizes<char, int, long int>();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用GNU GCC -std=C++0x
.使用-std=gnu++0x
没有区别.
How*_*ant 14
以下是您消除基本案例歧义的方法:
#include <iostream>
#include <typeinfo>
template <typename FirstDatatype>
void OutputSizes()
{
std::cout << typeid(FirstDatatype).name() << ": " << sizeof(FirstDatatype) << std::endl;
}
template <typename FirstDatatype, typename SecondDatatype, typename... DatatypeList>
void OutputSizes()
{
OutputSizes<FirstDatatype>()
OutputSizes<SecondDatatype, DatatypeList...>();
}
int main()
{
OutputSizes<char, int, long int>();
}
Run Code Online (Sandbox Code Playgroud)