У меня есть некоторая нулевая структура, например:
struct null_type
{
null_type& someNonVirtualMethod()
{
return *this;
}
};
И в какой-то функции мне нужно передать ссылку на этот тип.
Причина:
template <typename T1 = null_type, typename T2 = null_type, ... >
class LooksLikeATupleButItsNotATuple
{
public:
LooksLikeATupleButItsNotATuple(T1& ref1 = defParamHere, T2& ref2 = andHere..)
: _ref1(ref1), _ref2(ref2), ...
{
}
void someCompositeFunctionHere()
{
_ref1.someNonVirtualMethod();
_ref2.someNonVirtualMethod();
...
}
private:
T1& _ref1;
T2& _ref2;
...;
};
Рекомендуется использовать нулевую ссылку в качестве параметра по умолчанию?:
*static_cast<NullType*>(0)
Он работает на MSVC, но у меня есть некоторые сомнения ...