Size: a a a

2020 December 09

АК

Александр Караев... in pro.cxx
Roman
Если ты правишь STL - то да! А так - нет )) Вторжение в std считается фу во многих style guides.

Идиома - делаешь свой hash в своем неймспейсе, чтобы ADL работал. При использовании пишешь

using std::hash;
 ... = hash(...);

И тогда будут цепляться и твой, и из std в зависимости от типа аргумента. Разумеется, using нужен только тогда, когда сам руками вызываешь этот метод явно, стандартное и так все будет работать "из коробки".

Тоже самое относится к swap и вообще ко всем свободным функциям.
std::hash для того и разрешили специализировать, чтобы это было дефолтным поведением для пользовательского типа. И это нормальный подход, учитывая, что std::hash - хеш по умолчанию для всех контейнеров стандартной библиотеки.
источник

D

Danya in pro.cxx
Roman
Если ты правишь STL - то да! А так - нет )) Вторжение в std считается фу во многих style guides.

Идиома - делаешь свой hash в своем неймспейсе, чтобы ADL работал. При использовании пишешь

using std::hash;
 ... = hash(...);

И тогда будут цепляться и твой, и из std в зависимости от типа аргумента. Разумеется, using нужен только тогда, когда сам руками вызываешь этот метод явно, стандартное и так все будет работать "из коробки".

Тоже самое относится к swap и вообще ко всем свободным функциям.
А когда ADL для шаблонов классов сделали?
источник

АК

Александр Караев... in pro.cxx
Roman
Если ты правишь STL - то да! А так - нет )) Вторжение в std считается фу во многих style guides.

Идиома - делаешь свой hash в своем неймспейсе, чтобы ADL работал. При использовании пишешь

using std::hash;
 ... = hash(...);

И тогда будут цепляться и твой, и из std в зависимости от типа аргумента. Разумеется, using нужен только тогда, когда сам руками вызываешь этот метод явно, стандартное и так все будет работать "из коробки".

Тоже самое относится к swap и вообще ко всем свободным функциям.
И хэш - это функтор, а не функция, так что сравнивать его с swap как минимум некорректно
источник

AN

Anton Nadtoka in pro.cxx
подскажите, как в cmake сделать, чтобы путь к бинарнику были без Debug и Release подпапок? Уже много настроек попробовал, не помогает. MacOS если что
источник

АВ

Александр Водянников... in pro.cxx
Не зависимо от типа в одну кучу чтоли >
источник

АВ

Александр Водянников... in pro.cxx
?
источник

AN

Anton Nadtoka in pro.cxx
Александр Водянников
Не зависимо от типа в одну кучу чтоли >
если мне вопрос  - да, без префикса. все равно перед сборкой вычищается папка output
источник

bt

baby tonight in pro.cxx
Anton Nadtoka
если мне вопрос  - да, без префикса. все равно перед сборкой вычищается папка output
Решал это копированием в отдельную папку и удалением release/debug директории. Нормально сделать не получилось
источник

ПК

Побитый Кирпич... in pro.cxx
Anton Nadtoka
подскажите, как в cmake сделать, чтобы путь к бинарнику были без Debug и Release подпапок? Уже много настроек попробовал, не помогает. MacOS если что
источник

IK

Irina Khomutova in pro.cxx
Коллеги, добрый день! Такой вопрос:
Есть низкоуровневые процедуры на си. К ним структуры, различающиеся типом данных для 1-2 членов из 5-8.
Думается использовать в таких случая шаблоны из C++, а далее определять типы:
Ну к примеру, пусть будет шаблон
template <typename T>
struct {
Int * I;
Int n;
T A;
} matrix

И уже типы:
typedef matrix<double> d_matrix;
typedef matrix<float> f_matrix;

Подскажите, некостыльное решение (собирать процедуры g++ нельзя), пожалуйста, чтобы и руками не плодить множество одинаковых структур, и чтобы на си собрать процедуры, а на C++ описать шаблоны типов и сами типы 🙄
источник

IZ

Ilia Zviagin in pro.cxx
Irina Khomutova
Коллеги, добрый день! Такой вопрос:
Есть низкоуровневые процедуры на си. К ним структуры, различающиеся типом данных для 1-2 членов из 5-8.
Думается использовать в таких случая шаблоны из C++, а далее определять типы:
Ну к примеру, пусть будет шаблон
template <typename T>
struct {
Int * I;
Int n;
T A;
} matrix

И уже типы:
typedef matrix<double> d_matrix;
typedef matrix<float> f_matrix;

Подскажите, некостыльное решение (собирать процедуры g++ нельзя), пожалуйста, чтобы и руками не плодить множество одинаковых структур, и чтобы на си собрать процедуры, а на C++ описать шаблоны типов и сами типы 🙄
Нет, не получится.
источник

ПК

Побитый Кирпич... in pro.cxx
Irina Khomutova
Коллеги, добрый день! Такой вопрос:
Есть низкоуровневые процедуры на си. К ним структуры, различающиеся типом данных для 1-2 членов из 5-8.
Думается использовать в таких случая шаблоны из C++, а далее определять типы:
Ну к примеру, пусть будет шаблон
template <typename T>
struct {
Int * I;
Int n;
T A;
} matrix

И уже типы:
typedef matrix<double> d_matrix;
typedef matrix<float> f_matrix;

Подскажите, некостыльное решение (собирать процедуры g++ нельзя), пожалуйста, чтобы и руками не плодить множество одинаковых структур, и чтобы на си собрать процедуры, а на C++ описать шаблоны типов и сами типы 🙄
Что имеется ввиду под процедурами?
источник

IZ

Ilia Zviagin in pro.cxx
Irina Khomutova
Коллеги, добрый день! Такой вопрос:
Есть низкоуровневые процедуры на си. К ним структуры, различающиеся типом данных для 1-2 членов из 5-8.
Думается использовать в таких случая шаблоны из C++, а далее определять типы:
Ну к примеру, пусть будет шаблон
template <typename T>
struct {
Int * I;
Int n;
T A;
} matrix

И уже типы:
typedef matrix<double> d_matrix;
typedef matrix<float> f_matrix;

Подскажите, некостыльное решение (собирать процедуры g++ нельзя), пожалуйста, чтобы и руками не плодить множество одинаковых структур, и чтобы на си собрать процедуры, а на C++ описать шаблоны типов и сами типы 🙄
Если для обработки этих структур будут вызываться функции на С, то передавать туда ты должна ИМЕННО ТЕ СТРУКТУРЫ, ЧТО БЫЛИ НАПИСАНЫ В С.
источник

AF

Aidar Fattakhov in pro.cxx
Побитый Кирпич
Что имеется ввиду под процедурами?
в паскале были такие помнится
источник

IZ

Ilia Zviagin in pro.cxx
Побитый Кирпич
Что имеется ввиду под процедурами?
функции же
источник

IK

Irina Khomutova in pro.cxx
Формально определение процедур и функций:
Процедуры не возвращают данные, а функции - возвращают
источник

IZ

Ilia Zviagin in pro.cxx
Irina Khomutova
Коллеги, добрый день! Такой вопрос:
Есть низкоуровневые процедуры на си. К ним структуры, различающиеся типом данных для 1-2 членов из 5-8.
Думается использовать в таких случая шаблоны из C++, а далее определять типы:
Ну к примеру, пусть будет шаблон
template <typename T>
struct {
Int * I;
Int n;
T A;
} matrix

И уже типы:
typedef matrix<double> d_matrix;
typedef matrix<float> f_matrix;

Подскажите, некостыльное решение (собирать процедуры g++ нельзя), пожалуйста, чтобы и руками не плодить множество одинаковых структур, и чтобы на си собрать процедуры, а на C++ описать шаблоны типов и сами типы 🙄
Можешь показать (лучше на pastebin или аналогах) две -три таких процедуры (объявление) и две-три типа данных (структур) к ним?
источник

AF

Aidar Fattakhov in pro.cxx
Irina Khomutova
Коллеги, добрый день! Такой вопрос:
Есть низкоуровневые процедуры на си. К ним структуры, различающиеся типом данных для 1-2 членов из 5-8.
Думается использовать в таких случая шаблоны из C++, а далее определять типы:
Ну к примеру, пусть будет шаблон
template <typename T>
struct {
Int * I;
Int n;
T A;
} matrix

И уже типы:
typedef matrix<double> d_matrix;
typedef matrix<float> f_matrix;

Подскажите, некостыльное решение (собирать процедуры g++ нельзя), пожалуйста, чтобы и руками не плодить множество одинаковых структур, и чтобы на си собрать процедуры, а на C++ описать шаблоны типов и сами типы 🙄
описание типа данных - часть языка, без описания типа данных манипулировать можно только указателем на данные но не данными, описать тип на отличном от используемого языке не выйдет
источник

IK

Irina Khomutova in pro.cxx
Ilia Zviagin
Если для обработки этих структур будут вызываться функции на С, то передавать туда ты должна ИМЕННО ТЕ СТРУКТУРЫ, ЧТО БЫЛИ НАПИСАНЫ В С.
Да передавать буду структуры, у которых типы будут те самы определенные typedef...
источник

AF

Aidar Fattakhov in pro.cxx
напишите кодген на питоне и всё
источник