Объявление using
для базового конструктора является закрытым, но класс все еще может быть создан. Почему?
Специальные возможности работают по-разному для operator[]
using
декларации, которая должна быть публичной.
#include <vector>
template<typename T>
class Vec : std::vector<T>
{
private:
using std::vector<T>::vector; // Works, even if private. Why?
public:
using std::vector<T>::operator[]; // must be public
};
int main(){
Vec<int> vec = {2, 2};
auto test = vec[1];
}
Что если бы я хотел, чтобы конструктор был приватным? Можно ли это сделать с помощью using
декларации?