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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Перевод кода с Java http://www.cyberforum.ru/cpp-beginners/thread918894.html
Здравствуйте! Есть код на java, который работает недостаточно быстро, для его ускорения решил переписать его на c++, вот что вышло, помогите исправить реализацию на c++ или укажите на ошибки, буду благодарен! import java.math.BigInteger; import java.util.Scanner; public class Main { public static final BigInteger one = BigInteger.ONE; public static final BigInteger minusOne =...
C++ Задача. Найти траекторию собаки за первые 15 секунд погони В точке P находится собака, а в точке Q - кошка. Расстояние между ними равно 100 м. Кошка бежит вдоль прямой S с постоянной скоростью 5 м/сек. Собака бежит в направлении кошки со скоростью 10 м/сек. Найти траекторию собаки за первые 15 секунд погони. Указание: заменить кривую ломаной: за первую секунду кошка пробегает отрезок QQ` а собака PP`. за вторую соответственно Q`Q`` и P`P``. в начале... http://www.cyberforum.ru/cpp-beginners/thread918868.html
Указатель на строку: как выводить не всю строку целиком, а конкретную букву C++
Есть программка: #include<iostream> using namespace std; void fn_str1(int i,string str1,char *p) { p=&str1; for(i=0;i<str1.length();++i) { p=&str1;
C++ Чем с++ будет полезен?
у меня такой интересный вопрос... я учу с++ от скуки и интереса, но мне бы хотелось знать - может ли он пригодиться в жизни?
C++ Ввести char * в консоль http://www.cyberforum.ru/cpp-beginners/thread918857.html
Долбанный char * не получается ввести не cin ни gets ни getsline и т.д. Не могу понять как его ввести. Есть код: char *tbLEN = "TESTVASYA AND TWO TEXTZZ"; // Далее шифрование и другие действия... Надо сделать как то так: char *tbLEN = (ввод с клавы в консоль с учетом пробелов!); // Далее шифрование и другие действия... Help!
C++ Что-то не то с string Выполнял одну задачку. Суть задачи в том чтоб определять является ли введенная строка полиндромом. Рекомендовали использовать методы string и STL, но это не являлось требованием. В общем вроде ничего сложного, сначала сделал первую версию, и она работала, потом начал допиливать, и начала появляться ошибка outOfRange, попробовал вернуть старый робочий вариант, но ошибка не пропала... Ошибку... подробнее

Показать сообщение отдельно
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
06.07.2013, 22:03     Стандарт C++ поддержка Concepts и Reflection
вот такое только нашел:
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!
 
Текущее время: 14:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru