GithubHelp home page GithubHelp logo

asio-tr2's People

Contributors

chriskohlhoff avatar ja11sop avatar jwakely avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

asio-tr2's Issues

string_view variables should be passed by value

Throughout the document, string_view parameters are passed by const reference.

The string_view type is small, cheap to copy, and designed to be passed by value.

Also, there's a typo "string_vew" in the address_v6 section

Basic_resolver_query is underspecified

The only thing that's there is the constructors. There are no accessors nor public member variables, so there's no (documented) way to get the data out of this class.

use typedefs that you've declared

In the address_iteratorXX classes, you have

typedef const addressXX* pointer;
typedef const addressXX& reference;

but then you define functions thus:

const addressXX& operator*
const addressXX* operator->

The return types of these functions should be reference and pointer.

Remove is_executor

We will look at using SFINAE or similar at each place where it is used to branch code.

Question about read()

There are four overloads of read() defined in section 10.8.19.

read(stream, buffers);
read(stream, buffers, error);
read(stream, buffers, completion);
read(stream, buffers, completion, error);
  • What is the difference in behavior between the versions that take an error_code and the ones that do not? [ My guess is that when the error code is non-zero, they throw it, but the spec doesn't say that ]
  • If that is true, should the versions that take an error code be noexcept?

The same questions apply to write()

Change associated allocator wording

Make these changes from executor for allocators:

A completion handler object of type Handler has an associated executor object
ex2 of type Executor2 satisfying the [link requirements.executor Executor
requirements]. The type Executor2 is associated_executor_t<Handler, Executor1>. The object ex2 is obtained by performing
associated_executor<Handler, Executor1>::get(handler, ex1).

Reconsider ip::address default constructor

The proposal currently specifies that a default constructed ip::address have is_ipv4() == false and is_ipv6() == false. Or to put it another way, the ip::address class can contain:

  • an IPv4 address; or
  • an IPv6 address; or
  • a Not-An-Address value

So right now the ip::address class can represent a value that is outside the domain of valid IP addresses. This is not the established practice in Asio and as I implement this I am finding that it might cause inconsistencies in the other types that use ip::address, like ip::basic_endpoint.

Please give each section in the proposal a name as well as a number

In the standard, every section has a unique name such as [container.requirements]. (and the section names are hierarchical)

Sometimes sections get renumbered, but the name acts as a “unique identifier” for the section.
More practically, the LWG issue tools use the section names to group issues, and the libc++ test suite is organized according to section name.

So, "10.13.4. Class ip::address” could have a name of [ip.address]
followed by [ip.address.address_v6] and [ip.address.address_v4]

I think this will make the review go easier (and make tracking changes across revisions simpler, too)

Ambiguity in make_address_v4

Given:
make_address_v4(unsigned long);
make_address_v4(const char *);

The call: make_address_v4(0) is ambiguous (or so says clang)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.