Comments (1)
Михаил Мальцев, 6 декабря 2016, 15:29
С placeholder-ами таких проблем быть не должно, т.к. они "extern const", а не "constexpr":
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/src/c%2B%2B11/placeholders.cc
Anton Bikineev, 7 декабря 2016, 15:38
Михаил Мальцев,
Миша, это только в libstdc++ имплементации. Стандарт же говорит [20.14.10.4.2]:
Placeholders should be defined as:
constexpr unspecified _1{};
If they are not, they shall be declared as:
extern unspecified _1;
yndx-antoshkka, 7 декабря 2016, 15:49
Проверил логи заседания. GB28 было отправлено в LEWG для того, чтобы определить каким именно методом решать эту проблему: просто добавить недостающие inline, либо сделать чтобы constexpr
для переменных автоматически добавлял Inline (как он сейчас делает для функций). В LEWG возникли вопросы по поводу ABI и решение было отложено на след заседание.
Если есть желание помочь с этой проблемой, стоит написать proposal, в котором исследовать влияние добавления inline на ABI для clang и gcc. В нём же, стоит попробовать сформулировать "патч" к стандарту, который говорит что constexpr автоматически добавляет inline и для переменных тоже. Готов всячески помогать при написании proposal (но сделать всё самостоятельно к концу января не смогу).
Anatoly Scheglov, 27 декабря 2016, 18:45
Уже предлагали всякие Inline Variables http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4424.pdf
yndx-antoshkka, 9 марта 2017, 17:39
Исправили в C++17. Пометили теги и все шаблонные переменные как inline в https://wg21.link/p0607.
Меня немного волнует, что эти переменные получили таким образом external linkage вместо internal linkage. Но волнует не настолько сильно, чтобы думать о том как это исправить.
from ideas.
Related Issues (20)
- оптимизация coroutine initial/final HOT 2
- Однократный вызов кода (как создание static переменных) HOT 1
- Разрешить shebang в C++ HOT 3
- Перечисление пространств имён через запятую после using namespace HOT 3
- Аналог метода extract для std::set/std::map, когда исходный контейнер больше не потребуется HOT 2
- Наследование enum class
- Аналог GetModuleFileName
- Добавляем недостающие type-erased перегрузки `std::format` и `std::print`
- __int128_t HOT 3
- linalg в C++26. HOT 2
- why one of my inputs is empty?
- Предложение по улучшению HOT 3
- Новый манипулятор вывода чисел с плавающей точкой HOT 4
- Опциональные члены шаблонного класса по requires
- Добавить контэйнерам возможность обрезаться до нужного диапазона HOT 4
- Удаление элемента вектора за О(1), если не требуется сохранять порядок элементов HOT 11
- Добавить функциям имя возвращаемого значения HOT 4
- Добавить в map и set методы получения первого и последнего элементов
- Добавить pop_back() параметр - количество удаляемых элементов
- Добавить класс для heap структуры данных HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ideas.