Я не понимаю, почему это работает нормально:
std::array<double, 2> someArray = {0,1};
std::shared_ptr<MyClass> myobj = std::make_shared<MyClass>(someArray);
Но это не работает:
std::shared_ptr<MyClass> myobj = std::make_shared<MyClass>({0,1});
Компилятор говорит:
too many arguments to function ‘std::shared_ptr< _Tp> std::make_shared(_Args&& ...)
...
candidate expects 1 argument, 0 provided
Вопрос: Может кто-нибудь уточнить, почему это происходит, и если есть какой-то способ, которым я могу исправить второй подход без определения дополнительной переменной?
Редактировать: Пример MyClass
:
#include <memory> //For std::shared_ptr
#include <array>
#include <iostream>
class MyClass{
public:
MyClass(std::array<double, 2> ){
std::cout << "hi" << std::endl;
};
};