while (cin >> val)
подразумевает, что мы ждём конца консоли.// Add C includes here
#if defined __cplusplus
// Add C++ includes here
#include <stdlib>
#include <iostream>
#include <vector>
#include <QApplication> // Qt includes
#include <QPushButton>
#include <QLabel>
#include "thirdparty/include/libmain.h"
#include "my_stable_class.h"
...
#endif
std::string commandLine = console.getSomeCommandLine();
Command command;
std::string error;
if (!command.parse(commandLine, error)) {
console.err().writeln(error);
return;
}
Program* program = system.findProgram(command.programName);
if (!program) {
console.err().writeln("Bad command or file name");
return;
}
Console redirectedConsole = console.redirectStreams(command);
program->exec(redirectedConsole, system, command.getArguments());
const std::vector<std::string>& getArguments() const;
const std::vector<std::string>& getOptions() const;
connect(&Button, &QPushButton::clicked,
&Base, [&]() {
// тут код
});
namespace curl {
std::atomic<size_t> nLib(0);
class _Lib
{
public:
bool isIn = false;
~_Lib();
};
_Lib lib;
void addLib()
{
int q = ++nLib;
if (q == 1) {
lib.isIn = true;
q = ++nLib;
curl_global_init(CURL_GLOBAL_ALL);
}
//std::cout << "Added lib, now " << q << std::endl;
}
void releaseLib()
{
int q = --nLib;
if (q == 0) {
//std::cout << "Cleaned up lib" << std::endl;
curl_global_cleanup();
} else {
//std::cout << "Released lib, now " << q << std::endl;
}
}
_Lib::~_Lib()
{
if (isIn)
releaseLib();
}
}
curl::Curl::Curl()
{
addLib();
fData.handle = curl_easy_init();
}
curl::Curl::~Curl()
{
if (fData.handle)
curl_easy_cleanup(fData.handle);
releaseLib();
}
#include <iostream>
constexpr int countArgs() { return 0; }
template <class Arg, class ... Args>
constexpr int countArgs(const Arg& x, const Args& ... args)
{
return countArgs(args...) + 1;
}
int main()
{
std::cout << countArgs() << std::endl;
std::cout << countArgs(1, 2, 3) << std::endl;
return 0;
}
#include <iostream>
#include <cstdarg>
constexpr int countArgs() { return 0; }
template <class ... Args>
constexpr int countArgs(int x, Args ... args)
{
return countArgs(args...) + 1;
}
void outArgsInner(int count, ...)
{
va_list ap;
va_start(ap, count);
if (count > 0) {
std::cout << va_arg(ap, int);
for (int i = 2; i <= count; ++i) {
std::cout << ' ' << va_arg(ap, int);
}
}
va_end(ap);
std::cout << std::endl;
}
template <class ... Args>
inline void outArgs(Args ... args)
{
outArgsInner(countArgs(args...), args...);
}
int main()
{
outArgs(); // пустой тоже работает
outArgs(1, 2, 3);
// outArgs("a", 2, 3); тут ошибка! — и верно, мы принимаем только int’ы
return 0;
}
template <class T>
class ChunkMap
{
public:
// Data access
//------------------------------------------------------------------------//
/// @return data at index t, or empty value
T get(size_t t) const;
//------------------------------------------------------------------------//
/// Sets data at index t (empty value to erase)
void put(size_t t, T x);
//------------------------------------------------------------------------//
/// Erases range [0..maxPlus)
void eraseTo(size_t aMaxPlus);
// Info
size_t nChunks() const { return fChunks.size(); }
bool isEmpty() const { return fChunks.empty(); }
//------------------------------------------------------------------------//
/// @return the number that is beyond all chunks
size_t ceil() const;
//------------------------------------------------------------------------//
/// @return actual number of records in the map
size_t size() const;
//------------------------------------------------------------------------//
/// @return lowest value in the map; (0, empty) if empty
std::pair<size_t, T> lowerValue() const;
//------------------------------------------------------------------------//
/// @return highest value in the map; (0, empty) if empty
std::pair<size_t, T> upperValue() const;
//------------------------------------------------------------------------//
/// @return (t1, v), t1 <= t; (0, empty) if none
std::pair<size_t, T> lowerOrEq(size_t t) const;
template <class Body> void loop(const Body& r) const;
template <class Body> void loopFrom(size_t aMin, const Body& r) const;
//------------------------------------------------------------------------//
/// Loops all data. Body is bool-convertible.
/// Return true → go on.
/// Return false → stop and return false.
template <class Body> bool loopBool(const Body& r) const;
void clear() { fChunks.clear(); }
constexpr static T emptyValue() { return std::numeric_limits<T>::max(); }
static bool isEmptyValue(const T& x) { return (x == emptyValue()); }
constexpr static unsigned chunkSize() { return Chunk::SIZE; }
private:
struct Chunk
{
enum { SIZE = 8 };
Fix1d<T, SIZE> data; // мой шаблон, массив фиксированного размера с проверкой на выход за границы
Chunk();
bool isEmpty() const;
std::pair<size_t, T> lowerValue(size_t aKey) const;
std::pair<size_t, T> upperValue(size_t aKey) const;
};
typedef std::map<size_t, Chunk> Chunks;
Chunks fChunks;
};
ui
. Когда вы делаете форму программно, им не обязательно там быть, но редактор форм делает именно так.if (ui->textEdit->text() == "Hi") label->setText("Hi!");
extern template class
).// В схеме «одна единица компиляции»: ничего не делать.
// В схеме «много единиц компиляции»: лишняя зависимость; унести в unit1.cpp
#include <cstdlib>
// В схеме «одна единица компиляции»: убрать extern.
// В схеме «много единиц компиляции»: завести unit1.cpp, там сделать MyType x;
extern MyType X;
// В схеме «одна единица компиляции»: ничего не делать.
// В схеме «много единиц компиляции»: перенести функцию в unit1.cpp, оставив в .h только прототип.
void XReset() {}