Aidar
Ну это бага в си++
Constantine
Я пока пытаюсь придумать workaround на это
Constantine
Для member operator я его просто проверил уже
Constantine
template <typename TType>
constexpr std::enable_if_t<!sfinae::has_member_equal_to<TType>::value, bool> has_possible_bad_member_equal_to()
{
return false;
}
template <typename TType>
constexpr std::enable_if_t<sfinae::has_member_equal_to<TType>::value, bool> has_possible_bad_member_equal_to()
{
using type_traits = traits::member_equal_to<TType>;
static_assert(type_traits::arity::value == 2, "bad function traits");
return
!std::is_same<type_traits::arg<0>::type, TType const*>::value ||
sizeof(std::remove_reference_t<type_traits::arg<1>::type>) != sizeof(TType)
;
}
Constantine
Я пока размышляю на тему того, чтобы взять & у соответствующей функции и допроверять внешние
Aidar
Ваще имхо надо неполиморфные ссылки в язык и все
Aidar
Как ещё один вид
Aidar
Я это говно не очень продумал покс
Constantine
Ну это можно реализовать как exact_reference
Aidar
Надо в язык
Constantine
Хотя у меня не получилась нормальная реализация
Dmitry
Подскажите, каким образом std string предоставляет одновлеменно c_str и data?
Anonymous
data() — указатель на первый элемент, c_str — ээ... массив?
Constantine
Aidar
Constantine
Aidar
Aidar
Конст
Constantine
и в имени функции
Aidar
И дата появилась позже
Dmitry
Constantine
Berkus
Anonymous
Constantine
Returns a pointer to the underlying array serving as character storage. The pointer is such that the range [data(); data() + size()) is valid and the values in it correspond to the values stored in the string.
The returned array is not required to be null-terminated.
If empty() returns true, the pointer is a non-null pointer that should not be dereferenced. (until C++11)
Anonymous
http://en.cppreference.com/w/cpp/string/basic_string/c_str
Александр
Constantine
The returned array is null-terminated, that is, data() and c_str() perform the same function.
If empty() returns true, the pointer points to a single null character. (since C++11)
Anonymous
Constantine
блин, не хочу курить правила выбора operator ==
🐙 Antony
Constantine
Да, но я в ней не один :)
Антон, а тебе известны нормальные планы борьбы с вот этим?
struct A { bool operator == (A const& other) { return true; } };
struct B : A {};
void f() { B b1, b2; b1 == b2; }
Vitaliy
Да, но я в ней не один :)
Да, я знаю. Просто смотрю, что имя и фамилия знакомые)) Кажется ты делал доклад, когда ещё Гор по удаленке был.
🐙 Antony
тогда в чем отличие
до с++11 data() мог возвращать не нуль терминированную строку, а c_str() мог аллоуировать память и добивать нолик в конец. Но я/ не знаю имплементаций, которые до с++11 не хранили '\0' в конце.
С с++11 и позднее , для std::string data() и c_str() - одно и то же
🐙 Antony
🐙 Antony
Dmitry
Constantine
У меня не получилось написать реализацию обертки, которая вызовет конкретную сигнатуру operator == и только её
Aidar
Aidar
У итераторов тоже
Aidar
Точнее в трейтсах
🐙 Antony
Constantine
Хм... вот это скорее похоже на дефект, чем на разумное поведение
#include <vector>
int main() {
bool(*var)(std::vector<int> const&, std::vector<int> const&) = (&operator==);
return 0;
}
Constantine
оказывается в этом контексте не выполняется ADL
Constantine
кому писать репорт? :) санитарам? :)
Vladislav
Constantine
В спортлотто
Ну вот скажи мне, Слава. Это по-твоему дефект или так задумано?
Constantine
Ну или хотя бы что используется для десериализаторов в facebook
🐙 Antony
А вообще занятно, завтра посмотрю поподробнее
Ioann_
Ioann_
Нельзя применить разве ? Вроде к оператору () можно было
Ioann_
На счет других не знаю, проясните :?
Ioann_
Или тут речь о классе предке :?
Ioann_
Угу. Учту. Ну и вопргс номер 2: у меня есть конструктор, и много полей в классе. Вопрос такой, стоит ли пилить констуктор который может инитить сразу все поля, то есть на вход принимает все N нужных параметров :?
Ioann_
Слишком громоздкр выглядит при использовании
Ioann_
Сеттеры гетеры так то есть
Matwey
Ioann_
Ну невалидности там точно не будет, т.к речь о qt полях
Ioann_
Просто он огромен
Vladislav
Ioann_
Ну, что бы все ок было - да, то есть если они по умолчанию заинитятся, то потом просто можно сеттером поставить. Речь идет о картиночках если что.
Ivan
кто-нибудь пользовался https://github.com/eddic/fastcgipp ?
Nikita
Возможно ли быть веб программистом и не веб программистом (на с/с++ и т.п. ) одновременно?)
Anonymous
Все привет!
Anonymous
*всем*
Matwey
Господа. А как в студии называется билдин, который возвращает число нулевых битов начиная с наименее значимого?
Berkus
clz?
Berkus
а, с наименее
Berkus
ctz