Это не компилируется:
class foo
{
struct node
{
wchar_t val;
unordered_map<wchar_t,unique_ptr<node>> children;
};
node root;
public:
foo() :
root.val(L'า'), // error: expected '(' or '}'
root.children(unordered_map<wchar_t, unique_ptr<node>>())
{}; // error: expected '(' or '}'
};
Но это делает:
class foo
{
...<same as above> ....
foo() : root{L'า', unordered_map<wchar_t, unique_ptr<node>>()}{};
};
Пожалуйста, просветите меня, почему я не могу выразить, как в прежнем? Я искал больше часа и не мог найти объяснение. Я уверен, что упустил что-то простое.
clang версия 9.0.0 (теги/RELEASE_900/final) Цель: x86_64-apple-darwin17.7.0 clang++ -std=c++17
Благодарю вас!