Ваш PTHREAD_MUTEX_INITIALIZER
эквивалентен в некотором роде списку инициализаторов.
В C++ 03, вы можете инициализировать массив так:
int arr[5] = {1,2,3,4,5};
Обратите внимание на список инициализатор. Тем не менее, для классов нет поддержки.
В C++ 11 они добавили std::initializer_list<T>
, поэтому этот синтаксис возможен. Рассмотрим следующий пример:
std::vector<int> v = {1,2,3,4,5};
Или еще проще:
std::vector<int> v{1,2,3,4,5};
Это будет работать на C++ 11, но не C++ 03, так как в C++ 11, вектор имеет конструктор, который принимает аргумент списка инициализатора. Вы можете включить это и в свои собственные классы. Обратите внимание, что последнее равносильно следующему, как обычно:
std::vector<int> v ({1,2,3,4,5});
Это помогает проиллюстрировать тот момент, что список инициализатора является фактическим типом в настоящее время.
Если вы хотите увидеть рекламный ролик Stroustrup, я указываю вам его C++11 FAQ.
-1: Совершенно не имеет отношения к вопросу. Это системный заголовок ... – 6502
@chris любые обходные пути? –
@clickstefan, я не использую его, поэтому я не знаю, что именно представляет собой pthread_mutex_t', но он скорее всего просто имеет синтаксис списка инициализаторов как короткий путь и имеет долгий путь через других членов класса , – chris