#include <atomic>
std::atomic<int> outside(1);
class A{
std::atomic<int> inside(1); // <--- why not allowed ?
};
prog.cpp:4:25: error: expected identifier before numeric constant
prog.cpp:4:25: error: expected ',' or '...' before numeric constant
В VS11
C2059: syntax error : 'constant'
Инициализаторы в классе не поддерживают (e)
синтаксис инициализации, потому что члены комитета, которые его разработали, беспокоятся о потенциальных двусмысленностях (например, хорошо известный T t(X());
объявление было бы неоднозначным и не определяет инициализацию, но объявляет функцию с неназванным параметром).
Ты можешь сказать
class A{
std::atomic<int> inside{1};
};
В качестве альтернативы значение по умолчанию может быть передано в конструктор
class A {
A():inside(1) {}
std::atomic<int> inside;
};
Других решений пока нет …