Заканчивается 2014 год, а gcc до сих пор не может сгенерить нормальное сообщение об ошибке, если забыть поставить точку с запятой в конце определения класса или структурки.
T& value() &;
T&& value() &&;
T&&& value() &&&;
T&&&& value() &&&&;
T&&&&& value() &&&&&;
В интернете говорят, что если ты хочешь завернуть forward declaration объект unique_ptr то для внешнего класса нужен ДЕСТРУКТОР.
Чо этой падле не нравится?
In file included from /usr/include/c++/4.9/memory:81:0,
from meshedobject.hpp:5,
from render.cpp:13:
/usr/include/c++/4.9/bits/unique_ptr.h: In instantiation of ‘void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = MOImpl]’:
/usr/include/c++/4.9/bits/unique_ptr.h:236:16: required from ‘std::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp = MOImpl; _Dp = std::default_delete<MOImpl>]’
meshedobject.hpp:20:21: required from here
/usr/include/c++/4.9/bits/unique_ptr.h:74:22: error: invalid application of ‘sizeof’ to incomplete type ‘MOImpl’
static_assert(sizeof(_Tp)>0,
#ifndef MESHEDOBJECT_HPP
#define MESHEDOBJECT_HPP
#include <string>
#include <memory>
#include "scene.hpp"
#include "object.hpp"
struct MOImpl;
class MeshedObject: public Object {
std::unique_ptr<MOImpl> impl;
public:
void render(Scene *scene);
void init(std::string name, const char *mesh_file, const char *texture_file, const char *vsKey, const char *fsKey);
void setPosition(float x, float y, float z);
~MeshedObject() {}
// string getName();
};
#endif
потихоньку пересматриваю записи докладов с CppCon 2014.
и... пиздец как всё плохо. Настоящий траур. Видосы стабильно портят настроение. И даже хуже.
вчера перед сном посмотрел один докладик (ничем особо не примечательный, тащемта) — а потом всю ночь (!) сны развивались вокруг поступка какого-то непрозрачного (непонятного) чувака (не меня), который на пати отрезал себе руку по плечо, и смолол её в мясорубке, как мог, второй рукой. Сука такой хоррор, етот хруст, куча кровищи на стене (с таким ярким брызгом от первого надреза), сама рука, ето мясо-в-кровище-без-кожи с чертами части человека; все очевидцы дёрганные и в неадеквате, куча ментов, а я в водолазном блядь костюме (с самого начала пати был).
потом карочи более или менее все сны вокруг етого крутились. Я мучался и переживал какбы днями, хотел у того чувака взять интервью, чтоб типа достоверно понять нахуй он это сделал, зачем этот публичный жест. Потом в какой-то момент частично проснулся и нашёл асоциативную связь между ним и типичным докладчиком с CppCon; "я добровольно жру дерьмо и растрачиваю рассудок+кармическое равновесие на костыли и грабли". Ну и кароч всё понял+поспал остаток более радужно.
кароч по сути, снятся NSFL-кошмары про плюсы. Не смотрите CppCon.
— и это не шутка, я дед Сириус Ли сейчас
Транслятор llvm → c++14 constexpr functions / templates. Выгода в том, что можно написать на каком-нибудь высокоуровневом языке сложную штуку, которая будет, например, возвращать параметр для шаблона. Другой вариант: транслятор из ML-подобного языка. В таком случае выхлоп и получившееся API будет аккуратнее выглядеть.
http://www.boost.org/doc/libs/1_56_0/libs/multi_index/doc/index.html
Boost.MultiIndex allows for the specification of multi_index_containers comprised of one or more indices with different interfaces to the same collection of elements.
бинарные литералы
вот и подросло поколение...
Бля, луа просто охуенно. Все сделано очень просто и красиво.
Единственная проблема тут в том, что говноплюсы не умеют в нормальные замыкания.