Подскажите хороший компилятор.
Что случилось с MinGW ? Он больше не обновляется? На официальном сайте все похоже закончилось в 2013ом году.
#include <iostream>
#include <type_traits>
#include <typeinfo>
template <typename T>
class GenericQueueBase
{
//Общий интерфейс очереди (для рантайм полиморфизма)
};
template <typename T>
class Queue_pass : public GenericQueueBase<T>
{
static_assert(sizeof(T) <= 4, "types up to 4 bytes are allowed");
//Реализация очереди
};
template <typename T>
class Pool_pass : public GenericQueueBase<T>
{
//Реализация пула
};
template<typename T>
using GenericQueue = typename std::conditional<sizeof(T) <= 4, Queue_pass<T>, Pool_pass<T>>::type;
int main()
{
std::cout << typeid(GenericQueue<int>).name() << '\n' << typeid(GenericQueue<double>).name();
}
num_wrong=num_wrong++
Это что? Это зачем?требует вызова лишнего деструктораЭто так страшно и сильно бьёт по производительности в вашем случае? В случае перемещения деструктор перемещённого объекта в общем случае ничего не должен делать.
#include <iostream>
#include <type_traits>
template <typename T>
typename std::enable_if<std::is_array<T>::value>::type
func(T& a)
{
std::cout << "func sizeof(a)=" << sizeof(a) << '\n';
}
int main()
{
char a[2][10]{ "test1","test2" };
std::cout << "sizeof(a)=" << sizeof(a[0]) << '\n';
func(a[0]);
}
static inline Settings& applicationSettings()
{
static Settings set = getSettings(settingsFilePath);
return set;
}
Cтандарт C++11 гарантирует, что getSettings будет вызвана только один раз вне зависимости от количества потоков дёргающих applicationSettings. Главное не забывайте что getSettings не потокобезопасна и не дёргайте её напрямую.