Работают ли атрибуты C ++ 11 на g ++ 4.7.2?

Вот небольшая программа:

#include <iostream>
#include <string>
#include <cstdlib>void Exit_With_Error(std::string const& error_message);

int main(){
Exit_With_Error("Error X occurred.");
return 0;
}

void Exit_With_Error(std::string const& error_message){
std::cerr << error_message << std::endl;
exit(EXIT_FAILURE);
return;
}

Как видите, функция Exit_With_Error, никогда не вернется. Я подумал, что лучше использовать атрибут, чтобы лучше проиллюстрировать это. Документация Вот, приводит меня к мысли, что это должно выглядеть так:

#include <iostream>
#include <string>
#include <cstdlib>[[noreturn]] void Exit_With_Error(std::string const& error_message);

int main(){
Exit_With_Error("Error X occurred.");
return 0;
}

[[noreturn]] void Exit_With_Error(std::string const& error_message){
std::cerr << error_message << std::endl;
exit(EXIT_FAILURE);
return;
}

Тем не менее, он не компилируется:

main.cpp:6:1: error: expected unqualified-id before ‘[’ token
main.cpp: In function ‘int main()’:
main.cpp:9:37: error: ‘Exit_With_Error’ was not declared in this scope
main.cpp: At global scope:
main.cpp:13:1: error: expected unqualified-id before ‘[’ token

Я получил это на работу, хотя!

#include <iostream>
#include <string>
#include <cstdlib>__attribute__((noreturn)) void Exit_With_Error(std::string const& error_message);

int main(){
Exit_With_Error("Error X occurred.");
return 0;
}

__attribute__((noreturn)) void Exit_With_Error(std::string const& error_message){
std::cerr << error_message << std::endl;
exit(EXIT_FAILURE);
return;
}

Мой вопрос:
Как мне заставить работать синтаксис [[attribute]]? Я компилирую с флагом c ++ 11 на gcc. Так, например,

g++ -std=c++11 -o main main.cpp

пока это не работает. У меня версия 4.7.2 компилятора.
Правильно ли работает способ, или я должен стремиться к этому более простому синтаксису?

2

Решение

Нет. Обобщенные атрибуты не были реализованы в GCC до версии 4.8.
Это можно увидеть здесь:
http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
http://gcc.gnu.org/gcc-4.8/cxx0x_status.html

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]