В настоящее время я изучаю, почему я могу вызывать приватную функцию из контекста, из которого она не должна быть доступна. Я уже сузил его до очень простого примера, но все еще не могу определить проблему.
LIVE пример
Это моя суженная версия:
template<typename From, typename To>
concept bool ConvertibleNoNarrow = requires(From f, To t) {
t = { f };
};
template<typename T>
class Wrapper {
T t;
public:
Wrapper(ConvertibleNoNarrow<T> u) : t(u) { }
private:
// should be PRIVATE
void operator()() { }
};
int main() {
Wrapper<long> w(1);
// should not be able to call this!
w();
}