1. C++ / Говнокод #24011

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    //Шапка таблицы
    
    cout << setw(10) <<char(218) <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(194)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(194)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(191) <<endl;
    
    cout <<setw(10) <<char(179) <<setw(10) <<"X" <<setw(10) <<char(179) <<setw(10) <<"F" <<setw(10)
    
    <<char(179) <<setw(10) <<"G" <<setw(10) <<char(179) <<endl;
    
    for (i = 0; i <= N; i++) {
    
    x = A + i*h;
    
    F = (x-1)*(x-1)*(x-1);
    
    G = ((x+5)*(x+5)*(x+5))/(1+(sin(x)*sin(x)));
    
    //Вывод в таблицу
    
    cout <<setw(10) << char(195)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(197)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(197)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(180)<<endl;
    
    cout << setw(10) << char(179) << setw(10)<< x << setw(10) << char(179) << setw(10)<< setprecision(5) << F << setw(10) << char(179) << setw(10) << setprecision(6) << G << setw(10) << char(179) << endl;
    
    } //for (i = 0; i <= N; i++)
    
    //Конец таблицы
    
    cout << setw(10) << char(192)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(193)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(193)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)<<char(196)
    
    <<char(217)<<endl;

    eto pizdez prosto, ya lettau blyad

    ETO_LABbl_DETKA, 26 Марта 2018

    Комментарии (2)
  2. C++ / Говнокод #23980

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    class NTPTime {
    public:
    	static NTPTime getInvalidTime() { NTPTime t; t.setInvalid(); return t; }
    
    public:
    	NTPTime() : m_Time(0) {}
    	NTPTime(const uint64_t time) : m_Time(time) {}
    	NTPTime(const uint32_t sec, const uint32_t frac)
    	  : m_Time(0)
    	{
    		this->set(sec, frac);
    	}
    
    	NTPTime(const boost::posix_time::ptime& timestamp);
    
    public: // Assignment operators
    	NTPTime& operator=(const uint64_t u) { m_Time = u; return *this; }
    	NTPTime& operator+= (const NTPTime& Q) { m_Time += Q.m_Time; return *this; }
    	NTPTime& operator-= (const NTPTime& Q) { m_Time -= Q.m_Time; return *this; }
    
    public: // Cast operators
    	operator uint64_t() { return this->m_Time; }
    
    public: // comparison operators
    	bool operator==(const NTPTime& other) const { return (m_Time == other.m_Time); }
    	bool operator!=(const NTPTime& other) const { return (m_Time != other.m_Time); }
    	bool operator>=(const NTPTime& other) const { return (m_Time >= other.m_Time); }
    	bool operator>(const NTPTime& other) const { return (m_Time > other.m_Time); }
    	bool operator<=(const NTPTime& other) const { return (m_Time <= other.m_Time); }
    	bool operator<(const NTPTime& other) const { return (m_Time < other.m_Time); }
    
    public: // arithmetic operators
    	NTPTime operator+(const NTPTime& other) const
    	{
    		NTPTime result = *this;
    		result += other;
    		return result;
    	}
    
    	NTPTime operator-(const NTPTime& other) const
    	{
    		NTPTime result = *this;
    		result -= other;
    		return result;
    	}
    
    public:
    	uint32_t getSeconds() const { return ((uint32_t)(m_Time >> 32));}
    	uint32_t getFracSeconds() const { return ((uint32_t)(m_Time & 0xFFFFFFFF));}
    	uint32_t getMilliseconds() const { const uint64_t t = 1000*m_Time ; return (uint32_t)((t>>32)&0xFFFFFFFF);}
    	uint32_t getMicroseconds() const { const uint64_t t = 125*m_Time/536871; return (uint32_t)(t&0xFFFFFFFF);}
    	void getTime_s_us(uint32_t& sec, uint32_t& us) const { sec = getSeconds(); us = getFracSeconds()/4295;}
    	uint64_t getTime(void) const {return m_Time;}
    
    public:
    	/// set the time in seconds and microseconds (micros: 0..1000 0000)
    	///This routine uses the factorization: 2^32/10^6 = 4096 + 256 - 1825/32
    	void setTime_s_us(const uint32_t sec, const uint32_t us) { m_Time = ((uint64_t)sec<<32) | ((us<<12)-((us*1852)>>5)+(us<<8));}
    
    	void set(const uint64_t& u) {m_Time = u;}
    	void set(const uint32_t sec, const uint32_t frac)
    	{
    		m_Time = sec;
    		m_Time = m_Time<<32;
    		m_Time |= frac;
    	}
    
    	void setInvalid() { m_Time = uint64_t(NOT_A_DATE_TIME) << 32; }
    
    	/// 2^32/10^6 = 4096 + 256 - 1825/32
    	void setMicroseconds(const uint32_t u) { const uint64_t t = ((uint64_t)u * 1825) >> 5; m_Time = ((uint64_t)u << 12) + ((uint64_t)u << 8) - t;}
    	void setMicroseconds(const uint64_t u) { const uint64_t t = (u * 1825) >> 5; m_Time = (u << 12) + (u << 8) - t;}
    	void setMilliseconds(const uint32_t u) { m_Time = (uint64_t)u * 536870912 / 125;}
    	void addMilliseconds(const uint32_t u) { NTPTime t; t.setMilliseconds(u); *this += t;}
    	void addMicroseconds(const uint32_t u) { NTPTime t; t.setMicroseconds(u); *this += t;}
    
    protected:
    	static double round(const double v);
    
    private:
    	static const double secondFractionNTPtoNanoseconds;
    	static const double nanosecondsToSecondFractionNTP;
    	static const uint32_t NOT_A_DATE_TIME;
    	static const uint64_t NOT_A_DATE_TIME64;
    	static const boost::posix_time::ptime m_epoch;
    
    protected:
    	uint64_t m_Time; ///< NTP time in 1/2^32 seconds (~233 ps)
    }; // NTPTime

    Чуть г-на и несколько комментов удалил, чтоб влезло. Чтоб понятно было, m_Time хранит время в единицах 1/2^32 сек.

    elapidae, 22 Марта 2018

    Комментарии (17)
  3. C++ / Говнокод #23979

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // OK
    class foo {};
    void foo();
    
    // не ОК: error: 'void bar()' redeclared as different kind of symbol
    namespace bar {}
    void bar();

    "Двойные стандарты"

    Elvenfighter, 22 Марта 2018

    Комментарии (5)
  4. C++ / Говнокод #23977

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    template<class T, T = 1>
        constexpr bool __can_one(int) { return true; };
        template<class T>
        constexpr bool __can_one(long) { return false; };
    
        template <class T>
        constexpr bool is_integral_v = __can_one<T>(0);

    https://twitter.com/ericniebler/status/976524085927731200
    Не кто попало, а автор Ranges TS (без пяти минут кусок стандарта) сомневается, валидную метушню он написал или нет. Пора уже создавать крестоблядский суд, который будет трактовать букву стандарта и решать, где с++ а где нет. И разрабы гцц будут нанимать за бешеное бабло крестоблядских юристов и судиться в крестоблядском суде с авторами багрепортов.

    subaru, 21 Марта 2018

    Комментарии (3)
  5. C++ / Говнокод #23970

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    //Они относятся к посту ниже
    #include "stdafx.h"
    #include<iostream>
    
    
    using namespace std;
    /*Доказать что (АВ)^-1=B^-1*A^-1*/
    void printLine(int n) {
    	n *= 2;
    	n--;
    	for (int i = 0; i < n;i++) {
    		cout << '*';
    	}
    	cout << endl;
    }
    void obr(bool **arr1,bool **arr2, int  m, int n) {
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < m; j++) {
    		arr2[i][j]=arr1[j][i];
    			//cout << arr1[j][i];
    			//cout << ' ';
    		}
    		//cout << endl;
    	}
    }
    void obr(bool **arr1, int  m, int n) {
    	for (int i = 0; i < n; i++) {
    	for (int j = 0; j < m; j++) {
    		
    			cout << arr1[j][i];
    			cout << ' ';
    		}
    		cout << endl;
    	}
    }
    void multiple(bool **arr1, bool **arr2,bool **tempAr, int  m, int n) {
    	for (int i = 0; i < m; i++) {
    		for (int j = 0;j < n; j++) {
    			tempAr[i][j]= arr1[i][j]* arr2[i][j];
    			cout << tempAr[i][j];
    			cout << ' ';
    		}
    		cout << endl;
    	}
    }
    void multiple(bool **arr1, bool **arr2, int  m, int n) {
    	for (int i = 0; i < m; i++) {
    		for (int j = 0; j < n; j++) {
    			cout << arr1[i][j] * arr2[i][j];
    			cout << ' ';
    		}
    		cout << endl;
    	}
    }
    void subtractionMatr(bool **arr1, bool **arr2, bool **tempAr, int  m, int n) {
    	for (int i = 0; i < m; i++) {
    		for (int j = 0; j < n; j++) {
    			if ((arr1[i][j] == true) && (arr2[i][j] == false)) {
    				tempAr[i][j] = true;
    			}
    			else {
    				tempAr[i][j] = false;
    			}
    			cout << tempAr[i][j];
    			cout << ' ';
    		}
    		cout << endl;
    	}
    }
    void subtractionMatr(bool **arr1, bool **arr2,  int  m, int n) {
    	for (int i = 0; i < m; i++) {
    		for (int j = 0; j < n; j++) {
    			if ((arr1[i][j] == true) && (arr2[i][j] == false)) {
    				 cout<< true;
    			}
    			else {
    				cout<< false;
    			}
    			cout << ' ';
    		}
    		cout << endl;
    	}
    }
    bool** setMemory(int m,int n) {
    	bool** ar;
    	ar = new bool*[m];
    	for (int i = 0; i < n; i++) {
    		ar[i] = new bool[n];
    	}
    	return ar;
    }
    void inputElements(bool **bar,int m,int n) {
    	for (int i = 0; i < m; i++) {
    		for (int j = 0; j < n; j++) {
    			cin >> bar[i][j];
    		}
    	}
    }

    Код относящийся к посту ниже

    ArthurMakaev, 20 Марта 2018

    Комментарии (0)
  6. C++ / Говнокод #23969

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    int main()
    {
    	//Все функции в посте выше
    	int m,n;
    	bool **ar1;
    	bool **ar2,**ar3;
    	bool **tar;
    	bool **temp;
    	setlocale(LC_ALL, "RUS");
    	system("color F0");
    	
    	
    	cout << "\tЗАДАНИЕ 1" << endl;
    	cout << "Требуется доказать что (A*B)^-1=(B^-1)*(A^-1)" << endl;
    	cout << "Введите размерность матриц" << endl;
    	cin >> m;
    	cin >> n;
    	ar1 = setMemory(m, n);
    	ar2 = setMemory(m, n);
    	ar3 = setMemory(m, n);
    	tar = setMemory(m, n);
    	temp = setMemory(m, n);
    	cout << "Введите элементы матрицы А" << endl;
    	inputElements(ar1, m, n);
    
    	
    
    	cout << "Введите элементы матрицы В" << endl;
    	inputElements(ar2, m, n);
    	cout << "Введите элементы матрицы C" << endl;
    	inputElements(ar3, m, n);
    	cout << "Cначала найдём (A*B)^-1" << endl;
    	cout << "A*B:" << endl;
    	multiple(ar1, ar2,tar, m, n);
    	cout << "Обратная (A*B): " << endl;
    	printLine(m);
    	obr(tar, m, n);
    	printLine(m);
    	cout << "Теперь переёдём к правой части, найдём (B^-1)*(A^-1) " << endl;
    	obr(ar2,tar, m, n);
    	obr(ar1, temp, m, n);
    	printLine(m);
    	multiple(tar, temp, m, n);
    	printLine(m);
    	cout << endl;
    	cout << endl;
    	printLine(40);
    	cout << "\tЗадание 2 " << endl;
    	cout << "Доказать что (А\\В)\\С=(А\\С)\\В " << endl;
    	cout << "А\\В :" << endl;
    	subtractionMatr(ar1, ar2, tar, m, n);
    	cout << "(А\\В)\\С :" << endl;
    	printLine(m);
    	subtractionMatr(tar, ar3, m, n);
    	printLine(m);
    
    
    
    	cout << "А\\C :" << endl;
    	subtractionMatr(ar1, ar3, tar, m, n);
    	cout << "(А\\C)\\B :" << endl;
    	printLine(m);
    	subtractionMatr(tar, ar2, m, n);
    	printLine(m);
    	system("pause");
        return 0;
    }

    ArthurMakaev, 20 Марта 2018

    Комментарии (2)
  7. C++ / Говнокод #23965

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    #include "stdafx.h"
    #include<iostream>
    #include<fstream>
    #include<string>
    #include<map>
    #include<iomanip>
    using namespace std;
    int main()
    {
    	string word;
    	setlocale(LC_ALL, "Russian");
    	char s[80];
    	fstream inOut;
    	multimap<string, int>my;
    	multimap<string, int>::iterator it;
    	inOut.open("text.txt", ios::in);
    	for (int i = 1; i < 40; i++) {
    		inOut.getline(s, 256);
    		char* pch;
    		pch = strtok(s, " ,-:;");
    		while (pch != NULL) {
    			word = string(pch);
    			my.insert(pair <string, int>(pch, i));
    			//cout << pch <<'\t'<<i<< endl;
    			pch = strtok(NULL, " ,-:");
    		}
    	}
    		inOut.close();
    	//cout << s;
    		for (it = my.begin(); it != my.end(); it++) {
    			cout.width(25);
    			cout << (*it).first <<setw(5) << (*it).second  << endl;
    		}
    	
    	
    	system("pause");
        return 0;
    }

    Берёт из текста строки и сортирует в алфавитном порядке

    ArthurMakaev, 19 Марта 2018

    Комментарии (17)
  8. C++ / Говнокод #23963

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    enum BitNumber {
    	Bit0 = 0,
    	Bit1 = 1,
    	Bit2 = 2,
    	Bit3 = 3,
    	Bit4 = 4,
    	Bit5 = 5,
    	Bit6 = 6,
    	Bit7 = 7
    };

    Из крупного проекта, крупной конторы... Но это еще цветочки, ягодки дальше будут.

    elapidae, 19 Марта 2018

    Комментарии (8)
  9. C++ / Говнокод #23958

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int a, b, c;
        cin>>a>>b;
        if(a==0&&b==0&&c==0)
            cout<<"Black";
        if(a==1&&b==0&&c==0)
            cout<<"Red";
            if(a==0&&b==1&&c==0)
            cout<<"Green";
            if(a==0&&b==0&&c==1)
            cout<<"Blue";
            if(a==1&&b==1&&c==0)
            cout<<"Yellow";
            if(a==1&&b==0&&c==1)
            cout<<"Magenta";
            if(a==0&&b==1&&c==1)
            cout<<"Cyan";
            if(a==1&&b==1&&c==1)
            cout<<"White";
    }

    не спрашивайте, для чего

    ramune, 18 Марта 2018

    Комментарии (19)
  10. C++ / Говнокод #23938

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    Antony Polukhin
     in 
    pro.cxx
    Кстати, в EWG одобрили constexpr контейнеры http://open-std.org/JTC1/SC22/WG21/docs/papers/2018/p0784r1.html
    так что есть все шансы к С++20 писать:
    constexpr std::string result = foo();
    t.me/ProCxx
    /184343
    Mar 16 at 10:47

    Library pragmatism

    Current implementations of standard libraries sometimes perform various raw storage operations through interfaces other than the standard allocator and allocator traits. That may make it difficult to make the associated components usable in constexpr components. Based on a cursory examination of current practices, we therefore propose to start only with the requirement that the container templates in the [containers] clause be usable in constexpr evaluation, when instantiated over literal types and the default allocator. In particular, this excludes std::string, std::variant, and various other allocating components. Again, it is our hope we will be able to extend support to more components in the future.

    With regards to the default allocator and allocator traits implementation, the majority of the work is envisioned in the constexpr evaluator: It will recognize those specific components and implement their members directly (without necessarily regarding the library definition).
    We might, however, consider decorating the class members with the constexpr keyword. Also, some implementations provide extra members in these class templates (such as libc++'s allocator_traits<A>::__construct_forward ) that perform non-constexpr-friendly operations (memcpy, in particular). Lifting such members to standard status would help interoperability between library and compiler implementations.

    j123123, 16 Марта 2018

    Комментарии (10)