有时需要将空类型传递给某个模板。例如:
template <typename X, typename Y>
struct BoundaryConditions {
X x; Y y;
BoundaryConditions(typename X::init xi, typename Y::init yi) : x(xi), y(yi) {
...
}
};
我们可能希望实现不带任何参数的自由边界条件。使用类型检查实现这样的事情非常容易:
struct Nothing {};
Nothing nothing = Nothing();
struct Free {
typedef Nothing init;
...
};
BoundaryConditions<Free, Fixed> foo(nothing, 100);
所以我的问题是:是否实现了类似我的&#34; Nothing&#34;输入标准库或者提升?
答案 0 :(得分:7)
您可以使用空tuple。与std::tuple<>();
答案 1 :(得分:2)
boost::none
和boost::none_t
怎么样?
答案 2 :(得分:2)
通常的解决方案是使用void
,但这需要对模板进行部分特化(这也是常见的,否则需要更多空间)。
答案 3 :(得分:0)