以下程序编译正常.
#include <iostream>
#include <bitset>
void foo(std::bitset<10> n)
{
std::cout << n.size() << "\n";
}
int main()
{
std::bitset<10> n;
foo(n);
}
Run Code Online (Sandbox Code Playgroud)
$ g++ -std=c++11 -Wall -Wextra -pedantic foo.cpp
$ ./a.out
10
Run Code Online (Sandbox Code Playgroud)
如何修改foo()
函数以使其可以接受bitset
任何大小?
这就是模板应该做的事情.因此,foo
使用非类型模板参数创建一个函数模板:
template<std::size_t N>
void foo(std::bitset<N> n)
{
std::cout << n.size() << "\n";
}
Run Code Online (Sandbox Code Playgroud)
然后
std::bitset<10> n10;
foo(n10);
std::bitset<20> n20;
foo(n20);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
684 次 |
最近记录: |