Что вы пытаетесь сделать:
coordPointPair.second.point<N-1>::point();
Похоже, вы хотите явно вызвать конструктор point
по умолчанию - который уже был вызван при создании pair
.Вы не можете вызывать конструкторы напрямую (если вы не используете размещение new, что не имеет смысла в этом сценарии)
Просто удалите эту строку.
Если вы по какой-то причине хотите перезаписать уже построенный.second
присваивая ему временный point<N-1>
, вы можете сделать это с помощью coordPointPair.second = point<N-1>();
.
Если в более сложном случае вы хотите передать аргументы конструктору point
, вы можете сделать это в списке инициализатора:
point(your_type your_arg) :
coordPointPair(
pair<double, point<N-1> >(0.0, point<N-1>(your_arg_here))
)
{
}