2016-02-14 3 views
2

Я набор функторов, как следующее:C++ 14 Generic лямбды в файле заголовка

const auto add = [](const auto& x) { 
    return [=](const auto& n) { return n + x; }; 
}; 

Правильно хранить их в заголовочном файле? (любые побочные эффекты?)

+0

да, вы можете ..... я думаю, что нет никаких проблем ... вы его протестировали? –

+0

Поскольку это на самом деле определение переменной (со странным типом, но все же) - не будет включать заголовок в нескольких файлах cpp, возникает проблема нескольких определений в отдельных единицах компиляции? –

+0

Это не вызывает проблемы, так как это const и, как я читал, он связан внутри. –

ответ

1

Вы можете хранить их в заголовке без каких-либо проблем. Если у вас есть одна и та же функция с теми же аргументами, это может вызвать проблему, но если у вас разные имена или аргументы, она перегружает ее, и у нее нет проблем.

Что касается констант, они могут храниться в заголовках, чтобы использовать их позже в разных программах. Как функции, вы можете использовать константу (определенную вами), когда вам это нужно.

Как «побочные эффекты», я бы сказал, что вы можете указать заголовок в другом файле и использовать свою функцию без необходимости ее повторного использования.

+0

Хорошо, спасибо. –

+2

"* Как и для consts, они могут храниться в заголовках просто для их использования позже в разных программах. Так же, как и функции, вы можете использовать константу (определенную вами) всякий раз, когда вам это нужно. *« Если вы не используете их каким-либо образом что вызывает нарушения ODR, поскольку @TC упоминается ... – ildjarn

 Смежные вопросы

  • Нет связанных вопросов^_^