Size: a a a

2020 July 16

CD

Constantine Drozdov in supapro.cxx
Liber Azerate
В любом случае это тонкости, что не особо затрагивают программиста, который только сел изучать С++
Разумеется. Еще его совершенно не затрагивает, что по сведениям компилятора код в STL вызывает ошибку компиляции
источник

CD

Constantine Drozdov in supapro.cxx
Что характерно, прочитать этот код он не может вообще
источник

LA

Liber Azerate in supapro.cxx
Constantine Drozdov
Разумеется. Еще его совершенно не затрагивает, что по сведениям компилятора код в STL вызывает ошибку компиляции
Правда что ли? Думаю, я тоже не понимаю
источник

CD

Constantine Drozdov in supapro.cxx
Liber Azerate
Правда что ли? Думаю, я тоже не понимаю
#include <iostream>

int main() {
   std::cout >> "Hello, world!";
}


https://pastebin.com/vu3GU1Jy
источник

CD

Constantine Drozdov in supapro.cxx
173 строки вывода компилятора, подстроки "template argument deduction/substitution failed" и "template<class _Istream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_istream<_Istream>, std::__is_extractable<typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type, _Tp&&, void> >::value, typename std::__is_convertible_to_basic_istream<_Tp>::__istream_type>::type "
источник

LA

Liber Azerate in supapro.cxx
Ну, может я ошибаюсь, но operator >> есть только для istream? Это странный код
источник

CD

Constantine Drozdov in supapro.cxx
Liber Azerate
Ну, может я ошибаюсь, но operator >> есть только для istream? Это странный код
Это самая банальная ошибка, которую можно допустить
источник

LA

Liber Azerate in supapro.cxx
Constantine Drozdov
Это самая банальная ошибка, которую можно допустить
Скажу вам честно, никогда не допускал, но, думаю, я по крайней мере понял, к чему вы вели. А теперь мне действительно пора
источник

CD

Constantine Drozdov in supapro.cxx
Liber Azerate
Скажу вам честно, никогда не допускал, но, думаю, я по крайней мере понял, к чему вы вели. А теперь мне действительно пора
#include <iostream>

int main() {
   std::cout < "Hello, world!";
}

https://pastebin.com/ZLRgh2Rr
источник

CD

Constantine Drozdov in supapro.cxx
#include <map>

int main() {
   std::map<int, int> mp;
   mp.insert(1, 2);
}

https://pastebin.com/dA4zUXnG
источник

s

std::slavik in supapro.cxx
Constantine Drozdov
Хорошо, тогда давайте поговорим об std::cout. Что это такое?
#ifndef SERIALLOGGER_H
#define SERIALLOGGER_H
#include <cstdio>
#include <iostream>
#include <sstream>
#include <string>

#include "ILogging.h"
#include "Singleton.h"
#include "mbed.h"
namespace Teddy {
class SerialLogger : public ILogging, public Singleton<SerialLogger> {
public:
 typedef std::ostream &(*ManipFn)(std::ostream &);
 typedef std::ios_base &(*FlagsFn)(std::ios_base &);

 SerialLogger(Stream &pc);
 enum LogLevel { INFO, WARN, ERROR };
 template <class T>  // int, double, strings, etc
 SerialLogger &operator<<(const T &output) {
   m_stream << output;
   return *this;
 }

 SerialLogger &operator<<(ManipFn manip)  /// endl, flush, setw, setfill, etc.
 {
   _mutex->lock();

   manip(m_stream);

   if (manip == static_cast<ManipFn>(std::flush) ||
       manip == static_cast<ManipFn>(std::endl))
     this->flush();
   _mutex->unlock();

   return *this;
 }

 SerialLogger &operator<<(FlagsFn manip)  /// setiosflags, resetiosflags
 {
   manip(m_stream);
   return *this;
 }

 SerialLogger &operator()(TraceLevel_t e) {
   m_logLevel = e;
   return *this;
 }
 void flush();
 // SerialLogger(const PinName usart_tx, const PinName usart_rx, const
 // uint32_t baud = 9600);
 ~SerialLogger();
 void printf(const char *format, ...) const override;
 void debug(const char *format, ...) const override;
 void warning(const char *format, ...) const override;
 void error(const char *format, ...) const override;
 void info(const char *format, ...) const override;
 bool is_available(void) const override;

private:
 Stream &_serial_p;
 Mutex *_mutex;
 std::stringstream m_stream;
 TraceLevel_t m_logLevel;
};
};      // namespace Teddy
#endif  // SERIALLOGGER_H
источник

s

std::slavik in supapro.cxx
ну у меня щас что-то типа такого)
источник

s

std::slavik in supapro.cxx
причем изначально были только методы, перегрузку операторов и синглтон вот надавно сделал и переопределение cout
источник

s

std::slavik in supapro.cxx
но вообще - cout в заголовочном файле iostream
#ifndef _GLIBCXX_IOSTREAM
#define _GLIBCXX_IOSTREAM 1

#pragma GCC system_header

#include <bits/c++config.h>
#include <ostream>
#include <istream>

namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION

 /**
  *  @name Standard Stream Objects
  *
  *  The &lt;iostream&gt; header declares the eight <em>standard stream
  *  objects</em>.  For other declarations, see
  *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html
  *  and the @link iosfwd I/O forward declarations @endlink
  *
  *  They are required by default to cooperate with the global C
  *  library's @c FILE streams, and to be available during program
  *  startup and termination. For more information, see the section of the
  *  manual linked to above.
 */
 //@{
 extern istream cin;    /// Linked to standard input
 extern ostream cout;    /// Linked to standard output
 extern ostream cerr;    /// Linked to standard error (unbuffered)
 extern ostream clog;    /// Linked to standard error (buffered)

#ifdef _GLIBCXX_USE_WCHAR_T
 extern wistream wcin;    /// Linked to standard input
 extern wostream wcout;  /// Linked to standard output
 extern wostream wcerr;  /// Linked to standard error (unbuffered)
 extern wostream wclog;  /// Linked to standard error (buffered)
#endif
 //@}

 // For construction of filebuffers for cout, cin, cerr, clog et. al.
 static ios_base::Init __ioinit;

_GLIBCXX_END_NAMESPACE_VERSION
} // namespace

#endif /* _GLIBCXX_IOSTREAM */

а его имплементация - платформозависима
источник

s

std::slavik in supapro.cxx
Constantine Drozdov
Краткая мораль: ваш mystdcout будет косячным, потому что его нельзя будет использовать в конструкторе при статической инициализации
можно подробнее для тупых - в чем проблема ?
источник

IZ

Ilia Zviagin in supapro.cxx
Yegor Popov
А что скажете насчет подобной работы с указателями?
{
       a: int = 1
       b: *int = *a
       c: **int = *b
       c
** = 0
}
*var - referencing
var* - dereferencing
Ну блин...
источник

С

Ст in supapro.cxx
так вообще законно делать?
namespace a = std;
источник

Е

Егор in supapro.cxx
Ст
так вообще законно делать?
namespace a = std;
А что такого? Всегда писать boost::mpl::fusion::hana::vector?
источник

v

vexillum in supapro.cxx
Ст
так вообще законно делать?
namespace a = std;
Почему нет?
источник

v

vexillum in supapro.cxx
namespace fs = std::filesystem
источник