Форум программистов, компьютерный форум CyberForum.ru

Стандарт C++ поддержка Concepts и Reflection - C++

Восстановить пароль Регистрация
 
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
06.07.2013, 21:18     Стандарт C++ поддержка Concepts и Reflection #1
Собственно вопрос, когда будет поддержка Concepts и Reflection?
Или в новом стандарте опять откажутся от их поддержки, как это было в C++11.
Известно ли что-нибудь по данному вопросу?
Просто с моим знанием английского многое может быть неоднозначным, поэтому гуглить смысла нет
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2013, 21:18     Стандарт C++ поддержка Concepts и Reflection
Посмотрите здесь:

Где можно скачать полное описание стандарта C++ (желательно поновее)? C++
стандарт ANSI C++
Concepts (C++0x) C++
C++ Стандарт языка С++
C++ Реально ли понять стандарт C++ на английском?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
06.07.2013, 22:03     Стандарт C++ поддержка Concepts и Reflection #2
вот такое только нашел:
N3580 - Concepts Lite - Constraining templates with predicates

Well, this is one of the papers that might not be part of the next minor standard, which seems to disapoint a few of you out there. The concepts approach for C++11 failed, it was dropped, as it was to complex to be adopted fully to the standard for C++11. Since then a lot of people have had their thoughts on how to integrate concepts into the language, as its a feature that would enhance C++ for sure. This proposal now concentraits on template constraints, which shall be applied to force the correctness of template use, not definition. The idea is to
let programmers directly state the requirements for template arguments as part of the templates interface
support function overloading and class template specialization based on constraints
fundamentally improving diagnostics by checking template arguments in terms of stated intent at the point of use
do all of this without any runtime overhead or longer compile times

Sounds good, so lets see a little example:
template<Sortable Cont>
void sort(Cont& container);

Here, Sortable is the constraint. It is in this case defined to require a random access iterator and the operator<. The Sortable constraint acts as type of Cont here, but is defined else where. So this is not the definition of a constraint, it is the use of a constraint. A alternative syntax allows to specifiy the constraints more exactly with require:
template<typename Cont>
requires Sortable<Cont>()
void sort(Cont& cont)

This allows to explicit state the requirements for a template after its interface definition. A constraint is now defined as:
"A constraint is simply an unconstrained, constexpr function template that takes no arguments and returns bool. It is —in the most literal sense— a predicate on template arguments. This also means that the evaluation of constraints in a requires clause is the same as constexpr evaluation."

So, a more complex constraint definition could look like this:
template<typename T> concept Equality_comparable()
{
return has_eq<T>::value
&& is_convertible<eq_result<T>,bool>::value
&& has_ne<T>::value
&& is_convertible<ne_result<T>,bool>::value;
}

To aid the implementation of concepts, the authors also introduce a way to implement constraints as a requires expression:
template<typename T>
constexpr bool Equality_comparable()
{
return requires (T a, T b) {
bool = {a == b};
bool = {a != b};
};
}

This goes on for more details see the paper. The authors state, that constraints are not concepts, and that this is only the first step in improving the language at compile time, and that full featured constraints are still the long time goal for the C++ Standard. Regarding C++14, there is a goal of getting at least a minor version of concepts lite into the C++14 standard, at least this is stated in the Meeting Minutes from the last telco in March. Bristol might bring further clarification here. Also a little spoiler, there will be most likely a talk about this topic at Meeting C++ 2013!
Добавлено через 34 минуты
и вот ещё что:
We had a first meeting of the Reflection Study Group; lots of interest, good plans - but that's for C++17 at the earliest. It still requires a lot of work and discussions. Mixins were not discussed as there was no proposal for them. Class generation through reflection was discussed as part of reflection, though. Static if was discussed, too. As I said, the summary will come up soon!
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.07.2013, 22:03     Стандарт C++ поддержка Concepts и Reflection #3
В С++14 их вроде как не будет.
А следующий стандарт нескоро выйдет, где-то в 2x видимо.

Не по теме:

Концепты и рефлексия - вещи, конечно, удобные, но меня больше огорчают лямбды с их жутко избыточным синтаксисом, который прямо-таки заставляет разбивать лямбду на 3 или более строк. В с++14 их немного допилили, но до лямбд в шарпе все равно далеко. Вот если бы разрешили опускать auto, return и всякие скобки, было бы действительно удобно. Хотя без рефлексии тоже очень грустно...

Issues
06.07.2013, 22:05     Стандарт C++ поддержка Concepts и Reflection
  #4

Не по теме:

diagon, думаю, концепты будут в 14, а рефлексия в 17.

Yandex
Объявления
06.07.2013, 22:05     Стандарт C++ поддержка Concepts и Reflection
Ответ Создать тему
Опции темы

Текущее время: 00:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru