Вы действительно хотите разрешить неявные преобразования из int
?Это может открыть массу непреднамеренных ошибок кодирования.Так как это действительно ошибка кодирования для передачи чего-либо, кроме 0, вы можете сделать одно из следующих действий:
#include <cassert>
struct P
{
// Option #1, only allow 0 as an argument.
explicit P(int v)
{
assert(v == 0);
// other stuff goes here.
}
// Option #2, provide a no-argument constructor.
P()
{
// behave like P(0)
}
};